var expr = Data.Customers
.GroupBy(c => c.Country, c => c.Name);
foreach (IGrouping<Countries, string> customerGroup in expr)
{
Trace.WriteLine("Country: " + customerGroup.Key);
foreach (var item in customerGroup)
{
Trace.WriteLine(item);
}
Trace.WriteLine("");
}
我希望得到以下结果:
国家:意大利
保 马可
国家:美国
詹姆斯 的谢
而不是:
国家:意大利 保罗 马可
国家:美国 詹姆士 的弗兰克 弗兰克
如果可能,请使用标准LINQ语法进行。
答案 0 :(得分:7)
如果您想按多个键分组,则必须使用匿名类型:
var expr = Data.Customers
.GroupBy(c =>new{c.Country, c.Name});
然后,您可以访问expr.Key.Country
和expr.Key.Name
。
答案 1 :(得分:0)
乍一看,我认为您不需要按名称分组
var expr = Data.Customers
.GroupBy(c => c.Country);
答案 2 :(得分:0)
var expr = Data.Customers
.Select(c => new { c.Country, c.Name})
.Distinct()
.GroupBy(c => c.Country, c => c.Name);
我发现了一个笨拙的解决方案,但没有使用LINQ语法。