繁体   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