如果其他条件来自C#中的LINQ

哈菲兹·H

我有linq查询,如果p.conditionVariable > 0要应用以下条件,则需要在其中设置条件。

from prob in table2.where(p => p.Id == p.ConditionVariable && !p.IsBlocked && p.IsActive)

如果p.conditionVariable == 0,则以下内容保持不变。

(from _obj1 in table1.Where(p => p.IsActive == true))
                           from prob in table2.Where(p => p.Id == _obj1.Id && !p.IsBlocked && p.IsActive && p.ConditionVariable == 0)
                           select new Class1
                           {
                               Title = prob.Title,
                               Status = prob.IsPending,
                               Id = obj1.id 
                           }
脱水

我认为您想在||两个条件之间做出选择table2并将根据进行查询p.CondtionVariable

(from _obj1 in table1.Where(p => p.IsActive == true))
   from prob in table2.Where(p => (p.Id == _obj1.Id && !p.IsBlocked && p.IsActive && p.ConditionVariable == 0)
                               || (p.ConditionVariable > 0 && p.Id == p.ConditionVariable && !p.IsBlocked && p.IsActive))
   select new Class1
   {
       Title = prob.Title,
       Status = prob.IsPending,
       Id = _obj1.id 
   }

如果您想使用if/else条件,可以使用类似这样的东西

(from _obj1 in table1.Where(p => p.IsActive == true))
   from prob in table2.Where(p => {
            bool state = false;
            if(p.ConditionVariable > 0)  {
                state = p.Id == p.ConditionVariable && !p.IsBlocked && p.IsActive;
            } else if(p.ConditionVariable == 0) {
                state = p.Id == _obj1.Id && !p.IsBlocked && p.IsActive;
            }
            return state;   
        })
   select new Class1
   {
       Title = prob.Title,
       Status = prob.IsPending,
       Id = _obj1.id 
   }

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章