C# 具有linq的组和子组

C# 具有linq的组和子组,c#,linq,list,lambda,C#,Linq,List,Lambda,我有一个T类,其成员为ProductId,CategoryId,CategoryName和datelastmedited。 我想要实现的是创建一个匿名类型的新列表(在我的视图中只是循环遍历它),它首先在CategoryName上分组,然后按DateLastModified.Year&DateLastModified.Month 到目前为止我有 var groupedList = list.GroupBy(x => new { x.CategoryName }); 其中列表是我的列表 这将

我有一个T类,其成员为
ProductId
CategoryId
CategoryName
datelastmedited
。 我想要实现的是创建一个匿名类型的新列表(在我的视图中只是循环遍历它),它首先在
CategoryName
上分组,然后按
DateLastModified.Year&DateLastModified.Month

到目前为止我有

var groupedList = list.GroupBy(x => new { x.CategoryName });
其中列表是我的
列表

这将categoryName作为元素的键进行分组,只是下一步不确定


提前感谢

如果您必须使用嵌套组,请尝试以下操作:-

 var query = from pro in products
                       group pro by pro.CategoryName into newGroup1
                       from newGroup2 in
                           (from prod in newGroup1
                            group prod by new { prod.DateLastModified.Year, prod.DateLastModified.Month } 
                           )
                       group newGroup2 by newGroup1.Key;

正在工作。

您必须使用嵌套组。在这种情况下,请尝试以下操作:-

 var query = from pro in products
                       group pro by pro.CategoryName into newGroup1
                       from newGroup2 in
                           (from prod in newGroup1
                            group prod by new { prod.DateLastModified.Year, prod.DateLastModified.Month } 
                           )
                       group newGroup2 by newGroup1.Key;

正在工作。

您必须使用嵌套组。在这种情况下,请尝试以下操作:-

 var query = from pro in products
                       group pro by pro.CategoryName into newGroup1
                       from newGroup2 in
                           (from prod in newGroup1
                            group prod by new { prod.DateLastModified.Year, prod.DateLastModified.Month } 
                           )
                       group newGroup2 by newGroup1.Key;

正在工作。

您必须使用嵌套组。在这种情况下,请尝试以下操作:-

 var query = from pro in products
                       group pro by pro.CategoryName into newGroup1
                       from newGroup2 in
                           (from prod in newGroup1
                            group prod by new { prod.DateLastModified.Year, prod.DateLastModified.Month } 
                           )
                       group newGroup2 by newGroup1.Key;


正在工作。

您想按3个键分组一次还是按3个级别分组?(好的,2个级别)两次,首先按categoryName分组,然后按年/月组合对categoryName分组。您只想与linq一起进行此操作吗?我接受任何解决方案:)您想按3个键分组一次还是按3个级别分组?(好的,2个级别)两次,首先按categoryName分组,然后按年/月组合对categoryName分组。您只想与linq一起进行此操作吗?我接受任何解决方案:)您想按3个键分组一次还是按3个级别分组?(好的,2个级别)两次,首先按categoryName分组,然后按年/月组合对categoryName分组。您只想与linq一起进行此操作吗?我接受任何解决方案:)您想按3个键分组一次还是按3个级别分组?(好的,两个级别)两次,首先对categoryName进行分组,然后按年份/月份对categoryName进行分组。你只想对linq进行分组吗?我对任何解决方案都持开放态度:)谢谢你,我不得不想出一个拙劣的解决方案。我初始化了两个列表,第一个列表按CategoryName分组,在select new中有一个计数,第二个列表按CategoryName、DatePublished.Month、DatePublished.Year分组,在select new中也有一个计数。然后创建了一个在CategoryName上加入的JoinedList(将始终是唯一的),并从该加入列表中选择一个新的,CategoryName=.CategoryName,catsTotal=c.TotalCatCount,Month=m.Month,MonthTotal=m.TotalMonthCount。虽然很乱,但还是奏效了。谢谢你,我不得不想出一个拙劣的解决方案。我初始化了两个列表,第一个列表按CategoryName分组,在select new中有一个计数,第二个列表按CategoryName、DatePublished.Month、DatePublished.Year分组,在select new中也有一个计数。然后创建了一个在CategoryName上加入的JoinedList(将始终是唯一的),并从该加入列表中选择一个新的,CategoryName=.CategoryName,catsTotal=c.TotalCatCount,Month=m.Month,MonthTotal=m.TotalMonthCount。虽然很乱,但还是奏效了。谢谢你,我不得不想出一个拙劣的解决方案。我初始化了两个列表,第一个列表按CategoryName分组,在select new中有一个计数,第二个列表按CategoryName、DatePublished.Month、DatePublished.Year分组,在select new中也有一个计数。然后创建了一个在CategoryName上加入的JoinedList(将始终是唯一的),并从该加入列表中选择一个新的,CategoryName=.CategoryName,catsTotal=c.TotalCatCount,Month=m.Month,MonthTotal=m.TotalMonthCount。虽然很乱,但还是奏效了。谢谢你,我不得不想出一个拙劣的解决方案。我初始化了两个列表,第一个列表按CategoryName分组,在select new中有一个计数,第二个列表按CategoryName、DatePublished.Month、DatePublished.Year分组,在select new中也有一个计数。然后创建了一个在CategoryName上加入的JoinedList(将始终是唯一的),并从该加入列表中选择一个新的,CategoryName=.CategoryName,catsTotal=c.TotalCatCount,Month=m.Month,MonthTotal=m.TotalMonthCount。虽然很乱,但还是奏效了。你的房间干净多了:)