web-dev-qa-db-ja.com

Entity FrameworkのSelectとWhereの違い

Entity Frameworkの.Select().Where()の違いは何ですか?例えば

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

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

.Select.Whereはいつ使用する必要がありますか?

46
Anish

Select は射影なので、サーバー上のContextSet()の各要素に対して評価される式x=> x.FirstName == "John"が得られます。つまり、多数のtrue/false値(元のリストと同じ数)。 selectを見ると、IEnumerable<bool>のようなものが返されます(x=> x.FirstName == "John"の型はブールなので)。

Where は結果をフィルタリングし、元のタイプの列挙可能なものを返します(投影なし)。


そのため、すべての結果を保持したいが、タイプを変更する(投影する)場合は、Selectを使用します。

元の型を保持したまま、結果をフィルタリングする場合は、Whereを使用します

75
George Duckett

Where()はフィルターです。

Select()は、異なるデータを選択します。
あなたのSelect()の例はブール値のコレクションを返します。

21
SLaks