.NET Framework 通过...分组
示例
var persons = new[] { new { Name="Fizz", Job="Developer"}, new { Name="Buzz", Job="Developer"}, new { Name="Foo", Job="Astronaut"}, new { Name="Bar", Job="Astronaut"}, }; var groupedByJob = persons.GroupBy(p => p.Job); foreach(var theGroup in groupedByJob) { Console.WriteLine( "{0} are {1}s", string.Join(",", theGroup.Select(g => g.Name).ToArray()), theGroup.Key); } //Fizz,Buzz是开发人员 //Foo,Bar是宇航员
按国家/地区对发票分组,生成一个新对象,其中包含记录数,已付总金额和已付平均金额
var a = db.Invoices.GroupBy(i => i.Country) .Select(g => new { Country = g.Key, Count = g.Count(), Total = g.Sum(i => i.Paid), Average = g.Average(i => i.Paid) });
如果我们只想要总数,就没有组
var a = db.Invoices.GroupBy(i => 1) .Select(g => new { Count = g.Count(), Total = g.Sum(i => i.Paid), Average = g.Average(i => i.Paid) });
如果我们需要数
var a = db.Invoices.GroupBy(g => 1) .Select(g => new { High = g.Count(i =>i.Paid>= 1000), Low = g.Count(i =>i.Paid< 1000), Sum = g.Sum(i => i.Paid) });