我有这两个代码。第一个创建日期从今天到七天前(周末除外(。如何将第二个代码与第一个代码组合。我需要从第一个代码中获取日期,并将其用于与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帮助