web-dev-qa-db-ja.com

LINQ Select Distinct Count in Lambda form

次のようなオブジェクトコレクション「アイテム」のlinq式を指定します。

var total = (from item in items select item.Value).Distinct().Count()

これをlinq関数/ lambdasを使用するように変換することは可能ですか?

items.Select(???).Distinct().Count()
30
Kyle

これを使って:

items.Select(i => i.Value).Distinct().Count()
50
Daniel Hilgarth

裏で、LINQはラムダと式ツリーに変換されるため(少なくともLINQ to Objects)、それが可能でなければなりません。

あなたの場合、???部分はitem => item.Value、つまりitemの場合、出力item.value。したがって、式全体は

var total = items.Select(item => item.Value).Distinct().Count();
11
SWeko