質問

この状況では:

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

ウィル ここで 句はデータベースに到達しますか?

役に立ちましたか?

解決

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

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つだけでどのように混在しているかを確認できます。

覚えておいてください、Ienumerableは怠惰なので、要素を知る必要がない限り(それらを反復処理するため、またはそうするため)、要素を知る必要がない限り .Count() アイテムの数などを確認するために)、クエリ/操作は実行されません。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top