我怎样才能从foreach得到linq的日期



我有这两个代码。第一个创建日期从今天到七天前(周末除外(。如何将第二个代码与第一个代码组合。我需要从第一个代码中获取日期,并将其用于与m.CreationDate进行比较。我将使用此代码:获取typeid 1和每天的总图书编号。谢谢你的回答。。。

public static List<DateTime> GetBusinessDays(DateTime startDate, int numDays)
    {
        var dates = new List<DateTime>();
        var step = (numDays < 0) ? -1 : 1;
        var date = startDate;
        var absNumDays = Math.Abs(numDays);
        while (dates.Count() < absNumDays)
        {
            date = date.AddDays(step);
            if (date.DayOfWeek == DayOfWeek.Saturday || date.DayOfWeek == DayOfWeek.Sunday)
                continue;
            dates.Add(date);
        }
        return dates;
    }

string DateString = "";
var start = DateTime.Now;
var Dates = GetBusinessDays(start,-7);
            Dates.Reverse();
foreach (var date in Dates)
{   
    DateString  = DateString + "'" + date.ToShortDateString() + "',";
} 
DateString = DateString.TrimEnd(',');
var book = from m in  Connection.Db.Materials
           where m.TypeId == 1 && m.25.05.2015,.ToShortDateString() == xx//need to write days here but for everyday
           group m by m.TypeId into g
           select new { Count = g.Count()};  

从日期获取数据:2015年5月18日、2015年12月19日、2005年5月25日、2010年5月21日、2015年间5月22日、2015年末5月25日共26日。

我试图获取:m.CreationDate==2015年5月19日,typeid==1总书号:50

m。创建日期==2015年5月20日,typeid==1总书号:15

如果将日期放入集合中,则可以在linq 中使用Contains

var book = from m in  Connection.Db.Materials
       where m.TypeId == 1 && CreationDatesArray.Contains(m.CreationDate) 
       group m by m.TypeId into g
       select new { Count = g.Count()};

添加了m。如所指出的

好的。您在Dates中有日期集合。然后作为进行分组

var book = from m in Connection.Db.Materials 
           where m.TypeId == 1 
           group m by m.CreationDate into g 
           select g

然后你可以做

 var result = Dates.Select(d => new {
    Date = d, 
    Count = book.Where(g => g.Key == d).Count() }) 

result中,您可以从Dates中获得日期集合,并从第二个集合中获得计数。

string DateString = "";
var start = DateTime.Now;
var Dates = GetBusinessDays(start,-7);
Dates.Reverse();
foreach (var date in Dates)
{   
   DateString  = DateString + "'" + date.ToShortDateString() + "',";
 } 
DateString = DateString.TrimEnd(',');
var book = from m in Connection.Db.Materials 
           where m.TypeId == 1 
           group m by m.CreationDate into g select g;
           var results = Dates.Select(d => new { Date = d.Day + "/" + d.Month + "/" + d.Year, Count = book.Where(g => g.Key.Day == d.Day && g.Key.Month == d.Month && g.Key.Year == d.Year).Count() }).ToList(); 
//put day, month and year. Because only dates  equals with ohter dates.(I need only dates not times)
string Books = "";
foreach(var r in results)
{
  Books = Books + r.Count + ',';
}

感谢Everbody帮助

相关内容

  • 没有找到相关文章

最新更新