基于属性值创建动态Linq查询

3

我有一个包含多个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 = from accom in db.Accommodation
                     where accom.Hotel == true 
                     select accom;

Thanks in advance

2个回答

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;

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()或等效函数)时才会执行,因此您可以根据动态条件逐步在代码中构建它。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接