linq - 使用 Entity Framework 进行动态 Linq 查询

标签 linq entity-framework optimization dynamic dynamic-data

我知道动态构建 Linq 查询的努力很少,例如 this ,和this

似乎没有一个是理想的,因为我想避免将表达式放入字符串中,并在不需要时省略 where 。

我主要关心的是查询针对数据库进行了优化,并尽可能动态地省略不必要的子句。

针对此类场景,EF 4.0 有什么新的进展吗?

更新

这是我发现非常有帮助的一个链接: http://www.albahari.com/nutshell/predicatebuilder.aspx 事实上,动态添加“And”过滤器是微不足道的,并且可以使用谓词构建器轻松添加“Or”过滤器:

var predicate = PredicateBuilder.False<Product>();
predicate = predicate.Or (p => p.Description.Contains (temp));

根据 LinqPad,sql 会根据应用的过滤器相应地发出。

最佳答案

省略Where原因(伪代码,希望我正确理解你的问题):

var query = IQueryable<Foo>();

if(someCondition)
    query = query.Where(......);

var result = query.Select(.......);

对于动态查询 - 我还没有听说过任何新的东西。恕我直言,我们将不得不保留字符串。你能想出一些更好的方法吗?

关于linq - 使用 Entity Framework 进行动态 Linq 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3983355/

相关文章:

c# - 如何使用 Entity Framework 测试 View ?

matlab - 修正单纯形法 - Matlab 脚本

c# - OrderBy的效率和延迟执行

c# - Linq中的 "SELECT SYSTEM_USER"相当于什么

c# - 使用简单注入(inject)器注册多个DbContext

c# - 使用 LINQ to Excel 将数据从 Excel 导入到 SQL Server 数据库

performance - 无符号 32 位整数在 SSE 中的水平最小值和位置

performance - 有效的数据结构来保存带有通配符的字符串

linq - 在 IEnumerable 上尝试 FirstOrDefault 时抛出 TargetInvocableException

C# EF 从一个表中查找数据的最佳方法