簡體   English   中英

使用Entity Framework和LINQ選擇和過濾數據

[英]Selecting and filtering data using Entity Framework and LINQ

假設我有以下查詢:

 context.Orders.Where(predicate).Select(x => new { propA = x.PropA, propB = x.PropB}).ToList();

這是在DB / ORM級別上同時執行where和select函數,僅返回同時滿足兩個表達式的數據,還是返回所有滿足謂詞的結果,然后對它們執行選擇?

謝謝。

您正在使用IQueryable.Select方法。 因此,它肯定是翻譯成SQL.From的文檔

Select<TSource, TResult>(IQueryable<TSource>, Expression<Func<TSource, TResult>>)方法生成代表調用Select<TSource, TResult>(IQueryable<TSource>, Expression<Func<TSource, TResult>>的MethodCallExpression Select<TSource, TResult>(IQueryable<TSource>, Expression<Func<TSource, TResult>> )本身作為構造的泛型方法。 然后,它將MethodCallExpression傳遞到由源參數的Provider屬性表示的IQueryProviderCreateQuery(Expression)方法。

您可以使用探查器進行驗證,或者嘗試在Select調用不受支持的方法,並且會收到一個異常,表明linq to entities does not recognize the method X ,這也驗證了Select是否已轉換為SQL並且未在中執行記憶。

它將同時在DB / ORM級別上執行。 僅當枚舉IQueriable時才獲取查詢結果,例如,調用ToList()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM