我通常使用術語entity
來表示業務數據對象,在我看來,linq to entities
和linq to objects
是相同的。這是不正確的?linq to entities vs linq to objects - 它們是一樣的嗎?
回答
這肯定不是這樣的。
LINQ-to-Objects是IEnumerable<T>
上的一組擴展方法,它們允許您對任意的對象序列執行內存查詢操作。這些方法在必要時接受簡單的委託。
LINQ-to-Entities是LINQ提供商,它在IQueryable<T>
上有一組擴展方法。這些方法構建了一個表達式樹(這就是爲什麼代理實際上被傳遞爲Expression<>
),並且提供者將基於對該表達式樹的解析來構建SQL查詢。
作爲一個例子,考慮以下查詢:
var query1 = mydb.MyEntity.Select(x => x.SomeProp).Where(x => x == "Prop");
var query2 = mydb.MyEntity.Select(x => x.SomeProp).AsEnumerable().Where(x => x == "Prop");
第一個查詢是將建立一個表達式樹由選擇和其中,具有實際上視爲LambdaExpression
S上的2個lambda表達式。 LINQ-to-Entities提供程序將把它翻譯成既可選擇又可過濾的SQL。
第二個查詢插入AsEnumerable()
,這將強制查詢的其餘部分使用LINQ到對象。在這種情況下,提供程序將僅基於選擇生成SQL,從數據庫中返回所有這些記錄,然後過濾將發生在內存中。顯然,這可能會慢很多。
是否有任何方法來篩選一個linq對象查詢的條件或它是否總是縮小到第一個動作之前處理下一個? –
這取決於;如果你只想從數據庫中獲取* all *記錄,然後在內存中對它們執行操作,你可以在'Select()'之前放置'AsEnumerable()'*,然後做你想做的事情。但總的來說,將事情分開是更好的辦法。如果你有'IEnumerable
@dlev你沒有回答他問的問題。 –
Linq to entities用於Entity Framework,而Linq to objects用於任何IEnumerable集合。
更多細節:
Linq2Entities代表經由ADO.NET實體框架(數據庫)
Linq2Objects表示在存儲器中的數據(本地對象)查詢查詢數據。
L2o用於記憶中的對象。 L2e查詢數據庫。
LINQ到對象 術語「LINQ到對象」指的是使用LINQ查詢的直接任何的IEnumerable或IEnumerable集合,而不需要使用中間LINQ提供商或API的諸如LINQ到SQL或LINQ到XML。您可以使用LINQ來查詢任何可枚舉的集合,如List,Array或Dictionary。該集合可能是用戶定義的,也可能是由.NET Framework API返回的。
從基本意義上說,LINQ to Objects代表了一種新的集合方法。在舊的方式,你必須編寫複雜的foreach循環,指定如何從集合中檢索數據。在LINQ方法中,您編寫描述您想要檢索的內容的聲明性代碼。
裁判:http://msdn.microsoft.com/en-us/library/bb397919.aspx
LINQ到實體 LINQ到實體提供語言集成查詢(LINQ)支持,使開發人員能夠編寫使用Visual Basic或Visual C#對實體框架概念模型的查詢。針對實體框架的查詢由命令樹查詢表示,該查詢根據對象上下文執行。 LINQ to Entities將語言集成查詢(LINQ)查詢轉換爲命令樹查詢,針對實體框架執行查詢,並返回可由實體框架和LINQ使用的對象。以下是創建和執行LINQ to Entities查詢的過程: Ref:http://msdn.microsoft.com/en-us/library/bb386964.aspx
- 1. Linq to SQL比Linq to Entities更快嗎?
- 2. LINQ to Entities和LINQ to Objects如何處理轉換差異
- 3. Linq to entities OrderBy()
- 4. LINQ To Entities Multiselect
- 5. LINQ to entities exception
- 6. Linq to Entities - GroupBy
- 7. Linq to Entities DefaultIfEmpty
- 8. Linq to Entities System.data.Objects
- 9. LINQ-to-Entities
- 10. Linq To Entities
- 11. Linq To Entities
- 12. Linq to Entities
- 13. 從Linq-to-Entities中選擇Linq-to-XML?
- 14. 對Linq-to-Entities查詢操作的Linq-to-Objects查詢存在一些混淆
- 15. SQL to Linq to Entities轉換
- 16. Linq to Entities To Column names
- 17. LINQ To Entities then SQLCompact
- 18. String.Replace in LINQ to Entities
- 19. Linq to Entities - Eager Loading
- 20. Linq to entities和SQL_Latin1_General_CP1_CI_AI
- 21. LINQ to Entities this slow?
- 22. LINQ to Entities預測
- 23. Linq to Entities查詢 -
- 24. Linq to Entities Select Distinct
- 25. LINQ to Entities not supported
- 26. Linq-To-Entities包括
- 27. Linq to Entities加入
- 28. NoSQL vs Linq To Objects for asp.net mvc
- 29. Linq to Entities .net4 EF
- 30. Linq to Entities刪除
另請參閱:什麼是linq? http://stackoverflow.com/questions/471502/what-is-linq/471592#471592 –