2012-01-13 89 views
1

我希望做一個的GroupBy和選擇在LINQ的,但下面不編譯:使用LINQ to的GroupBy和選擇

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

爲什麼我不能在我的Select子句中使用f => f.name?更重要的是,有沒有辦法解決這個問題?

回答

5

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()) 
{ 
    ... 
} 
+0

謝謝你的回答和詳細的解釋。 – Jonathan 2012-01-16 23:44:33

1

GroupBy組值到鍵值對,所以你可能想

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