Linq後者の処理動作
-
09-09-2020 - |
質問
この状況では:
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()
アイテムの数などを確認するために)、クエリ/操作は実行されません。
所属していません StackOverflow