我有一个场景,我需要检索按日期时间字段的月份分组的对象计数。
我发现以下帖子让我了解了其中的一部分......
...但是我需要列出从今天开始的前 12 个月以及每个月的对象数量,这就是我苦苦挣扎的地方。
我看过其他一些具有类似问题/解决方案的帖子,但我选择了上面的帖子,因为它也是生成任何月份计数为 0 的记录的要求。
感谢您在这方面提供的任何帮助。
编辑
好的,感谢 Enigmativity,我得到了进一步的帮助(感谢您抽出宝贵的时间!):
var news = from s in db.NewsItems
where s.SubmittedDate > first
select new
{
Date = s.SubmittedDate,
Title = s.Title,
};
var grouping = from g in news.AsEnumerable()
select new NewsCountCollection
(
g.Date,
g.Title
);
var lookup = grouping.ToLookup(x => x.Month, x => x.Title);
var counts = from n in Enumerable.Range(-11, 12)
let Month = last.AddMonths(n)
select new
{
Month,
Count = lookup[Month].Count(),
};
var countList = from c in counts.AsEnumerable()
select new NewsCountMonthList
(
c.Month.ToString("MMMM"),
c.Count
);
...以及以下
public class NewsCountCollection
{
public DateTime Month { get; set; }
public string Title { get; set; }
public NewsCountCollection(DateTime date, string title)
{
this.Month = new DateTime(date.Year, date.Month, 1);
this.Title = title;
}
}
public class NewsCountMonthList
{
public string Month { get; set; }
public int Count { get; set; }
public NewsCountMonthList(string month, int count)
{
this.Month = month;
this.Count = count;
}
}
......虽然似乎效率很低......我不禁想到必须有比这更好的方法。我在正确的轨道上吗?