C# 基于属性值创建动态Linq查询
我有一个类,它包含许多bool类型的属性C# 基于属性值创建动态Linq查询,c#,linq,C#,Linq,我有一个类,它包含许多bool类型的属性 public class FilterModel { public bool Hotel { get; set; } public bool Apartment { get; set; } public bool Guesthouse { get; set; } } 我正在根据这些属性是真是假动态构造一个LINQ查询。 例如,如果我有一个此类的实例,并且Hotel设置为true。 我想生成一个LINQ查询,比如 var q
public class FilterModel
{
public bool Hotel { get; set; }
public bool Apartment { get; set; }
public bool Guesthouse { get; set; }
}
我正在根据这些属性是真是假动态构造一个LINQ查询。
例如,如果我有一个此类的实例,并且Hotel设置为true。
我想生成一个LINQ查询,比如
var q = from accom in db.Accommodation
where accom.Hotel == true
select accom;
提前谢谢您在找这样的东西吗
IQueryable<Accommodation> query = db.Accommodation;
if (filterModel.Hotel) query = query.Where(a => a.Hotel);
if (filterModel.Apartment) query = query.Where(a => a.Apartment);
if (filterModel.Guesthouse) query = query.Where(a => a.Guesthouse);
return query;
IQueryable查询=db.accountability;
if(filterModel.Hotel)query=query.Where(a=>a.Hotel);
if(filterModel.partment)query=query.Where(a=>a.partment);
if(filterModel.Guesthouse)query=query.Where(a=>a.Guesthouse);
返回查询;
您想要这样的东西:
var filterModel = GetFilterModelFromSomewhere();
var q = db.Accomodation;
if (filterModel.Hotel)
q = q.Where(accom => accom.Hotel);
if (filterModel.Apartment)
q = q.Where(accom => accom.Apartment);
if (filterModel.Guesthouse)
q = q.Where(accom => accom.Guesthouse);
由于查询在枚举之前(通过ToList()或等效函数)不会执行,因此可以根据动态条件在代码中逐段构建查询