C#linq查询,每个属性的where子查询
我有这张桌子: 我想做一个linq查询,其中我将根据AdminFilterFieldDid获取每个属性值 到目前为止,我有:C#linq查询,每个属性的where子查询,c#,entity-framework,linq,linq-to-sql,linq-to-entities,C#,Entity Framework,Linq,Linq To Sql,Linq To Entities,我有这张桌子: 我想做一个linq查询,其中我将根据AdminFilterFieldDid获取每个属性值 到目前为止,我有: newDto = from d in DbContext.AdminFilterItems where d.AdminFilterID == filterId select new ReservationDto { BookingDate = d.Value }; 既然B
newDto = from d in DbContext.AdminFilterItems
where d.AdminFilterID == filterId
select new ReservationDto
{
BookingDate = d.Value
};
既然BookingDate是AdminFilterFieldId是2,我希望我可以做一些类似于BookingDate=d.Value.Where(s=>s.AdminFilterFieldId=3)
的事情,或者在没有AdminFilterFieldId值的情况下为null。
我想对该adminfilterid的所有字段执行此操作
通过这种查询,这是可以实现的,还是我需要执行多个查询?这看起来很简单,只是where中的另一个子句
from d in DbContext.AdminFilterItems
where d.AdminFilterID == filterId
&& d.AdminFilterFieldID = 3
select new ReservationDto
{
BookingDate = d.Value
};
如果需要对多个值进行筛选,只需保留初始查询并对其运行其他筛选,然后进行投影(选择)
它看起来很简单,只是where中的另一个子句
from d in DbContext.AdminFilterItems
where d.AdminFilterID == filterId
&& d.AdminFilterFieldID = 3
select new ReservationDto
{
BookingDate = d.Value
};
如果需要对多个值进行筛选,只需保留初始查询并对其运行其他筛选,然后进行投影(选择)
您需要使用反射来枚举类(模型)属性,或者创建一个将字符串属性名称与类中的属性相匹配的接口。
d.Value
是单行值,而不是组。您可能需要在AdminFilterID
上分组,或者在选择之前放置位置
,以仅提取行,可能在整个查询中使用.DefaultIfEmpty()
来查找是否不存在值为3
的AdminFilterFieldID
。这似乎是一个糟糕的数据库设计,不适合关系数据库(除非有令人信服的理由使用它-例如,可能有多个重复的AdminFilterField
s)。@NetMage有多个筛选字段,现在,因为我正在构建一个要执行的查询,所以我需要检查该搜索字段的值是否存在或是否为null。Thx用于注释但除非过滤器字段是动态的,否则您可以使用一个常规SQL表,每个过滤器字段有一列。是否动态创建筛选器字段?您需要使用反射来枚举类(模型)属性,或者创建一个将字符串属性名称与类中的属性相匹配的接口。d.Value
是单行值,而不是组。您可能需要在AdminFilterID
上分组,或者在选择之前放置位置
,以仅提取行,可能在整个查询中使用.DefaultIfEmpty()
来查找是否不存在值为3
的AdminFilterFieldID
。这似乎是一个糟糕的数据库设计,不适合关系数据库(除非有令人信服的理由使用它-例如,可能有多个重复的AdminFilterField
s)。@NetMage有多个筛选字段,现在,因为我正在构建一个要执行的查询,所以我需要检查该搜索字段的值是否存在或是否为null。Thx用于注释但除非过滤器字段是动态的,否则您可以使用一个常规SQL表,每个过滤器字段有一列。是否动态创建过滤器字段?