2

この状況では:

var allCustomers = from c in customers select c;
var oldCustomers = from o in allCustomers where o.age > 70 select o;

where句はデータベースに到達しますか?

4

1 に答える 1

2

私はあなたが意味すると思います:

var oldCustomers = from o in allCustomers where o.age > 70 select o;

はい、データベースに到達します。

LINQPad を使用して、生成された SQL コードを確認してみてください。次に例を示します。

次のフィールドを持つActorテーブルがあります。

Id | Name | Age

コード:

var x = from c in Actors where c.Name.Contains("a") select c;
var y = from c in x where c.Age > 0 select c;

に翻訳されます:

-- Region Parameters
DECLARE @p0 Int = 0
DECLARE @p1 NVarChar(3) = '%a%'
-- EndRegion
SELECT [t0].[Id], [t0].[Name], [t0].[Age]
FROM [Actor] AS [t0]
WHERE ([t0].[Age] > @p0) AND ([t0].[Name] LIKE @p1)

2 つのクエリが 1 つのクエリにどのように混在しているかがわかります。

IEnumerables は遅延であるため、それらの要素を知る必要がない限り (それらを反復するため、または.Count()アイテムの数を確認するためなど)、クエリ/操作を実行しません。

于 2011-05-22T00:30:08.750 に答える