使用Linq进行GroupBy和Select

时间:2012-01-13 01:14:23

标签: c# .net linq group-by

我正在寻找Linq中的GroupBy和Select,但以下内容无法编译:

foreach (string fooName in fooList.GroupBy(f => f.Name).Select(f => f.Name))
{
    ...
}

为什么我无法在f => f.name条款中使用Select?更重要的是,有什么方法可以解决这个问题吗?

2 个答案:

答案 0 :(得分:5)

GroupBy会返回IGrouping<TKey, TSource>的序列,因此Select方法中的lambda参数的类型为IGrouping<TKey, TSource>,而不是TSource。相反,你可以这样做:

foreach (string fooName in fooList.GroupBy(f => f.Name).Select(grouping => grouping.Key))
{
    ...
}

但无论如何,有一种更简单的方法可以达到同样的效果:

foreach (string fooName in fooList.Select(f => f.Name).Distinct())
{
    ...
}

答案 1 :(得分:1)

GroupBy将值分组为键值对,因此您可能需要

 foreach (string fooName in fooList.GroupBy(f => f.Name).Select(f => f.Key))
 {
    ...
 }