web-dev-qa-db-fra.com

Différence entre Select et Where dans Entity Framework

Quelle est la différence entre .Select() et .Where() dans Entity Framework? Par exemple

return ContextSet().Select(x=> x.FirstName == "John")

contre

ContextSet().Where(x=> x.FirstName == "John")

Quand dois-je utiliser .Select contre .Where?

46
Anish

Select est une projection, donc ce que vous obtenez est l'expression x=> x.FirstName == "John" évaluée pour chaque élément dans ContextSet() sur le serveur. c'est-à-dire beaucoup de valeurs vraies/fausses (le même nombre que votre liste d'origine). Si vous regardez, la sélection renverra quelque chose comme IEnumerable<bool> (Car le type de x=> x.FirstName == "John" Est un booléen).

Where filtre les résultats, renvoyant un énumérable du type d'origine (pas de projection).


Donc, utilisez Select lorsque vous souhaitez conserver tous les résultats, mais changez leur type (projetez-les).

Utilisez Where lorsque vous souhaitez filtrer vos résultats, en conservant le type d'origine

75
George Duckett

Where() est un filtre.

Select() sélectionne une autre donnée.
Votre exemple Select() renverra une collection de booléens.

21
SLaks