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) });