Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/269.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 基于属性值创建动态Linq查询_C#_Linq - Fatal编程技术网

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

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

我有一个类,它包含许多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;

提前谢谢

您在找这样的东西吗

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()或等效函数)不会执行,因此可以根据动态条件在代码中逐段构建查询