web-dev-qa-db-fra.com

LINQ Select Distinct Count sous forme Lambda

Étant donné une expression linq d'une collection d'objets 'items' comme celle-ci:

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

Est-il possible de le convertir pour utiliser les fonctions linq/lambdas:

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

Utilisez ceci:

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

Cela doit être possible, car en arrière-plan, LINQ est traduit en lambdas et en arbres d'expression (au moins LINQ en objets)

Dans votre cas, le ??? une partie serait item => item.Value, c'est-à-dire pour item, sortie item.value. Donc, toute l'expression sera

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