【问题标题】:Linq with EF dynamic search带有 EF 动态搜索的 Linq
【发布时间】:2010-01-16 07:09:28
【问题描述】:

我正在使用带有 MVC 的 EF 3.5。

我想创建一个搜索页面,有一些字段用于日期、int 等条件。

linq to entity 中动态过滤结果的方式是什么。

如果我们可以使用一个参数 .where(a=>a.id==1)

但是与可选参数的许多组合我如何加载结果然后传递给模型。

【问题讨论】:

    标签: asp.net-mvc linq entity-framework linq-to-entities


    【解决方案1】:

    EF 3.5?总之……

    您可以在 ObjectQuery、ObjectSet 或 IQueryable 上附加搜索条件,并根据有用的搜索条件链接它们。

    public SearchMyThings( string a, string b, int c )
    {
         var mywidgets = ObjectContext.CreateObjectSet<Widget>();
         //or the EF 1.0 version CreateSet?
    
         if( !a.IsNullOrEmpty )
            mywidgets = mywidgets.Where( w => w.AProperty == a );
    
         if( !b.IsNullOrEmpty )
            mywidgets = mywidgets.Where( w => w.BProperty == b );
    
         if( c > 0 )
            mywidgets = mywidgets.Where( c => c.CProperty == c );
    
    }
    

    如果您需要基于字符串的方法,您始终可以使用 ObjectQuery.Where("esql") 的重载来动态构造一些 eql 并将其传递。

    如果您需要更多地控制字符串并且不怕复杂性,您可以试试Dynamic Linq

    【讨论】:

      猜你喜欢
      • 2012-04-11
      • 2017-02-22
      • 2011-05-22
      • 2016-11-13
      • 1970-01-01
      • 2011-07-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多