我有这个LINQ
var summary =
from b in books
group b by b.DateAdded.Value.Year.ToString() into newgroup
from newgrour2 in
(
from b in newgroup
group b by new
{
month = b.DateAdded.Value.ToString("MMMM")
}
)
group new Monthly
{
Month = newgrour2.Key.month,
Count = newgrour2.Count()
} by new
{
Year = newgroup.Key.ToString(),
Count = newgroup.Count()
};
可以通过以下方式获取
foreach (var year in Summary)
{
var y = year.Key.Year;
var cc = year.Key.Count;
foreach (var month in year)
{
var m = month.Month;
var c = month.Count;
}
}
输出将为
2018 - 5 in total
May - 3 items
June - 1 item
July - 1 item
2017 - 4 in total
February - 4 items
我的问题是我不希望这部分是匿名的
new { Year = newgroup.Key.ToString(), Count = newgroup.Count() };
但是如果我将其替换为
new Yearly { Year = newgroup.Key.ToString(), Count = newgroup.Count() };
它并没有真正按年份分组;它只会进入一个列表。
我如何进行相同的输出但不匿名?
如果我使用匿名类型执行此操作,
summary
包含2个项目-2018年和2017年正确
year
现在将包含其自己的月份
但是,如果我使用Yearly
执行此操作,则summary
会将所有项目都包含在一个列表中。没有子项。