LINQ Select Distinct Count в лямбда-форме - PullRequest
30 голосов
/ 07 июля 2011

Учитывая выражение linq коллекции объектов 'items', например:

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

Можно ли преобразовать это для использования linq functions / lambdas:

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

Ответы [ 2 ]

50 голосов
/ 07 июля 2011

Используйте это:

items.Select(i => i.Value).Distinct().Count()
11 голосов
/ 07 июля 2011

Это должно быть возможно, поскольку за кулисами LINQ переводится в лямбды и деревья выражений (по крайней мере, LINQ для объектов)

В вашем случае ??? будет иметь значение item => item.Value, т.е. для item, вывод item.value. Таким образом, все выражение будет

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