2011-11-25 47 views
4

如何使用linq投影按多列进行分组?如何.GroupBy多列LINQ/Projection?

事情是这样的:

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 

回答

5

可以GROUPBY匿名类型:

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

我如何排序“名称“在GroupBy之后?我试过GroupBy(...)。OrderBy(...),但似乎没有工作。谢谢! – JaJ

+0

@Jaj GroupBy返回一个IGrouping。如果你想扁平它,你可以使用:'.GroupBy(..)。Select(g => g.Key).OrderBy(item => item.Name);' –

+0

好吧,很酷。里德,再次感谢! – JaJ