如何在LINQ/Projection中按多列.GroupBy?

4
如何使用linq投影按多列分组?
类似这样:
var q = db.Areas.GroupBy(x => x.AreaCatId, x.AreaCatName, x.AreaId, x.AreaName);

导致平坦的结果集,例如:
AreaCatId, AreaCatName, AreaId, AreaName
0          US           1       FL 
0          US           2       NY 
1          Canada       3       BC
1个回答

5

您可以按匿名类型进行分组:

var q = db.Areas.GroupBy(
            x => new 
                 {
                     CatId = x.AreaCatId, 
                     CatName = x.AreaCatName, 
                     Id = x.AreaId, 
                     Name = x.AreaName 
                 });

在 GroupBy 之后如何按“名称”排序?我尝试过 GroupBy(...).OrderBy(...),但似乎不起作用。谢谢! - genxgeek
@Jaj GroupBy 返回一个 IGrouping。如果你想要展开它,可以使用:.GroupBy(..).Select(g => g.Key).OrderBy(item => item.Name); - Reed Copsey

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接