1
我希望做一個的GroupBy和選擇在LINQ的,但下面不編譯:使用LINQ to的GroupBy和選擇
foreach (string fooName in fooList.GroupBy(f => f.Name).Select(f => f.Name))
{
...
}
爲什麼我不能在我的Select
子句中使用f => f.name
?更重要的是,有沒有辦法解決這個問題?
我希望做一個的GroupBy和選擇在LINQ的,但下面不編譯:使用LINQ to的GroupBy和選擇
foreach (string fooName in fooList.GroupBy(f => f.Name).Select(f => f.Name))
{
...
}
爲什麼我不能在我的Select
子句中使用f => f.name
?更重要的是,有沒有辦法解決這個問題?
GroupBy
返回IGrouping<TKey, TSource>
的序列,所以在Select
方法拉姆達參數的類型是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())
{
...
}
GroupBy
組值到鍵值對,所以你可能想
foreach (string fooName in fooList.GroupBy(f => f.Name).Select(f => f.Key))
{
...
}
謝謝你的回答和詳細的解釋。 – Jonathan 2012-01-16 23:44:33