我正在使用EF 3.5和MVC。
我想创建一个搜索页面,有一些标准字段,如date,int等。
linq对实体动态过滤结果的方式是什么。
如果我们可以使用一个参数 。凡(A => a.id == 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。