Entity Frameworkの.Select()
と.Where()
の違いは何ですか?例えば
return ContextSet().Select(x=> x.FirstName == "John")
対
ContextSet().Where(x=> x.FirstName == "John")
.Select
対.Where
はいつ使用する必要がありますか?
Select
は射影なので、サーバー上のContextSet()
の各要素に対して評価される式x=> x.FirstName == "John"
が得られます。つまり、多数のtrue/false値(元のリストと同じ数)。 selectを見ると、IEnumerable<bool>
のようなものが返されます(x=> x.FirstName == "John"
の型はブールなので)。
Where
は結果をフィルタリングし、元のタイプの列挙可能なものを返します(投影なし)。
そのため、すべての結果を保持したいが、タイプを変更する(投影する)場合は、Select
を使用します。
元の型を保持したまま、結果をフィルタリングする場合は、Where
を使用します
Where()
はフィルターです。
Select()
は、異なるデータを選択します。
あなたのSelect()
の例はブール値のコレクションを返します。