1、Groupby
对集合进行分组,如:
var dllList = _menuMan.Load(c => c.TXT_ASSEMBLYNAME != null).GroupBy(c=>c.TXT_ASSEMBLYNAME).OrderByDescending(c=>c.Count()).Select(c=>c.Key).ToList();
这里Goupby后面的OrderByDescending表示对每组数量按倒序排列,最后返回每组的Key,该Key为String型
如果没有最后的Select,Groupby的结果集是IGROUPING<string,XXXX>类型
也可通过Select返回匿名类型,如.Select(c=>new{c.Key,mx=c.Max(p=>p.price)}) //注意,对非值类型的匿名类型成员必须设置名称,如本例中的mx=...。
另外,GroupBy后面的Where相当于Having,对Key可以分拆开,与count,max等组成自定义返回类型,如
var fpk = _frcr.FindAll(c => true).GroupBy(c => new { f = c.father, p = c.pkcol }).Where(c => c.Count() > 1).Select(g=>new { g.Key.f,g.Key.p,c=g.Count()}).ToList();
2、Orderby
升序Orderby,降序OrderByDescending