2010-01-16 82 views
0

我正在使用EF 3.5与MVC。Linq与EF动态搜索

我想要做一个搜索页面,对喜欢日标准的一些领域,诠释等

什么是LINQ到实体的方式来动态地过滤结果。

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

但具有可选PARAM我怎样才能加载结果,然后传递给模拟许多组合。

回答

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