Linq用EF动态搜索

时间:2010-01-16 07:09:28

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

我正在使用EF 3.5和MVC。

我想创建一个搜索页面,有一些标准字段,如date,int等。

linq对实体动态过滤结果的方式是什么。

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

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

1 个答案:

答案 0 :(得分:0)

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