我有一个包含许多bool类型属性的类。
public class FilterModel
{
public bool Hotel { get; set; }
public bool Apartment { get; set; }
public bool Guesthouse { get; set; }
}
我正在根据这些属性是true还是false动态构建LINQ查询。 例如,如果我有这个类的实例并且Hotel设置为true。 我想生成类似
的LINQ查询var q = from accom in db.Accommodation
where accom.Hotel == true
select accom;
提前致谢
答案 0 :(得分:3)
你在找这样的东西吗?
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;
答案 1 :(得分:2)
你想要这样的东西:
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()或等效函数),您可以根据动态条件在代码中逐个构建它。