19

LINQ-to-Entities では、次のようにしてエンティティをクエリできます。

var students = SchoolContext.Students.Where(s => s.Name == "Foo" && s.Id == 1);

舞台裏で SQL に変換され、次のようなものになることを私は知っています。

SELECT *
FROM Students
WHERE Name = 'Foo' AND Id = 1

ただし、次のように書いた場合、(パフォーマンスに関して)違いはありますか?

var students = 
    SchoolContext.Students
        .Where(s => s.Name == "Foo")
        .Where(s => s.Id == 1);

同じ SQL クエリに変換されますか? 私の理解では、.Where()が返さIEnumerable<T>れるので、2 番目は SQL.Where()に変換するのではなく、メモリ内のエンティティをフィルター処理IQueryable<T>しますが、それは正しいですか?

4

5 に答える 5

7

最初に Where が返さIQueryable<T>れるため、パフォーマンスの違いはありません。

于 2013-10-15T09:19:13.823 に答える
1

Linqpadを入手して、そこでさまざまなクエリを試してください。エンティティに直接接続を追加し、クエリを実行して、それぞれの場合にどの SQL が生成されるかを確認できます。Linq を試す優れた方法。

于 2013-10-15T09:24:03.383 に答える