1
我有IQuerable<MyEntity>
和過濾器(條件列表),我想適用於我的查詢。Linq - NHibernate。如何將ORQ運算符中的LINQ條件組合在一起。 IQuerable.Concat替代
示意我想的樣子
//First filter group // Second filter group
QUERY = from MYTABLE where (Name = "User" and Age = 19 ) OR (Name = "Alex", and Age > 20)
query = (query.Where(x => x.Name == value)
.Where(x => x.Age == value)
.Where(x => x.Post == value))
OR (
(query.Where(x => x.Name == value)
.Where(x => x.RegistrationDate == value))
我需要創建IQuerable
,將包含結果第一和第二濾波器組(IQuerable
)。
但是,我不能在第一個過濾器組,然後是第2組和concat結果執行,因爲在應用我的過濾器之後,我必須使用IQuarable
執行一些操作。
我試圖創建queryes和query.Concat()
有主,但NHibernate
不支持此方法的條件
public static IQueryable<IDevice> ApplyGroups(this IQueryable<IDevice> query, IList<ITerminalGroup> groups)
{
foreach (ITerminalGroup group in groups)
{
IQueryable<IDevice> groupQuery = query.AsQueryable();
// apply to groupQuery conditions
groupQuery = groupQuery.ApplyGroup(group);
query = query.Concat(groupQuery);
}
return query;
}
static IQueryable<IDevice> ApplyGroup(this IQueryable<IDevice> query, ITerminalGroup group)
{
foreach (ITermGroupCondition condition in group.Conditions)
{
query = query.Where(x => x.SpecialAttributes.Any(sa => x.Id == condition.AttribId && sa.AttribValue.Equals(condition.Value)));
}
return query;
}
計數可能是不同的,我不知道它提前
如何結合LINQ條件與OR運算符的組?