我正在寻找Linq中的GroupBy和Select,但以下内容无法编译:
foreach (string fooName in fooList.GroupBy(f => f.Name).Select(f => f.Name))
{
...
}
为什么我无法在f => f.name
条款中使用Select
?更重要的是,有什么方法可以解决这个问题吗?
答案 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))
{
...
}