Я написал следующий LINQ-to-SQL, чтобы я мог получить общее количество записей в день.Получение числа записей по дате в запросе LINQ to SQL, даже если результатов нет
Есть несколько модификаций, которые я хотел бы сделать, чтобы они соответствовали моим потребностям. Я делал различные попытки, но не смог понять это правильно.
Я бы хотел указать последние 9 дней, даже если в это время не было никаких «открытий». Я также хотел бы сгруппировать по Дню/Месяцу, а не только Дню, как я делаю ниже.
Пример вывода я хотел бы получить бы:
DateString Opens
===================
9/5 0
10/5 0
11/5 3
и т.д ...
public List<OpensOverTimeViewModel> GetOpensOverTimeViewModel(int eId)
{
DateTime lastDate = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day).AddDays(-9);
DateTime currentDate = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day).AddDays(1);
var summary = (from p in db.Opens
where (p.ElementId == eId) && (p.Timestamp >= lastDate) && (p.Timestamp <= currentDate)
let k = new
{
Day = p.Timestamp.Day
}
group p by k into t
select new OpensOverTimeViewModel
{
DateString = t.Key.Day,
TotalOpens = t.Count(),
ElementName = ""
}).ToList();
return summary;
}
Любая помощь о том, как лучше подойти к решению этого была бы оценена.
Вы можете заменить 'DateTime (DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day)' на 'DateTime.Today'. –