我正在寻找这些 LINQ 表达式的确认/澄清:
var context = new SomeCustomDbContext()
// LINQ to Entities?
var items = context.CustomItems.OrderBy(i => i.Property).ToList();
// LINQ to Objects?
var items2 = context.CustomItems.ToList().OrderBy(i => i.Property);
我是否认为第一种方法是
LINQ to Entities
EF 构建更具体的 SQL 语句以传递,将排序工作放在数据库上?第二种方法
LINQ to Objects
是 LINQToList()
在订购之前将整个集合拖入内存(枚举?),从而将负担留给服务器端(在这种情况下为 Web 服务器)?如果是这种情况,我可以很快看到 L2E 有利的情况(例如,在将集合拉入内存之前过滤/修剪集合)。
但是是否还有其他我应该注意的细节/权衡,或者“方法 2”可能优于第一种方法的时间?
更新:
假设我们没有使用 EntityFramework,只要底层存储库/数据源实现,这仍然是IQueryable<T>
正确的?如果这两个语句都不会导致LINQ to Objects
内存中的操作?