代码之家  ›  专栏  ›  技术社区  ›  Sonic Soul

基于实体框架的动态Linq查询

  •  3
  • Sonic Soul  · 技术社区  · 14 年前

    我知道动态构造Linq查询的工作很少,例如 this ,和 this .

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

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

    EF4.0在这种情况下有什么新的发展吗?

    更新

    以下是我发现非常有用的一个链接: http://www.albahari.com/nutshell/predicatebuilder.aspx 实际上,动态添加“And”过滤器很简单,使用谓词生成器可以轻松地添加“Or”过滤器:

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

    1 回复  |  直到 14 年前
        1
  •  1
  •   Jakub Konecki    14 年前

    由于省略了原因(伪代码,希望我能正确理解您的问题):

    var query = IQueryable<Foo>();
    
    if(someCondition)
        query = query.Where(......);
    
    var result = query.Select(.......);
    

    对于动态查询-我没有听说任何新的。嗯,我们将不得不留任。你能想出更好的办法吗?