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
?
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
Where()
est un filtre.
Select()
sélectionne une autre donnée.
Votre exemple Select()
renverra une collection de booléens.