在我的LINQ查询中添加OR?

时间:2016-08-02 15:06:46

标签: c# linq

所以我有“不断扩展的LINQ查询”......我发现自己不得不采用一些参数来解决问题。我有这个:

 var ud = db.Updates
   .Where(c => c.Sold.Equals(false)&&(c.Status.Equals(("Pending"))))
   .GroupBy(c => c.Vehicle)
   .Select(x => x
      .OrderByDescending(y => y.TimeStamp)
      .First())
   .ToList();

我需要在“c.Status.Equals”中添加一个OR来测试多个字符串值...例如“待定”|| “拒绝”这样做的正确方法/地点是什么?

非常感谢您的帮助!

3 个答案:

答案 0 :(得分:11)

您可能需要考虑存储值数组以查看是否满足任何约束:

// Store all of the statuses you need to match within a collection
var validStatuses = new []{ "Pending", "Rejected", ... };

然后您只需要更新Where()子句以检查您的现有状态是否与之前定义的集合中的任何一个匹配:

db.Updates.Where(c => !c.Sold && validStatuses.Contains(c.Status)))

答案 1 :(得分:0)

(c.Status.Equals(" Pending")|| c.Status.Equals(" Rejected"))

var ud = db.Updates

         .Where(c => c.Sold.Equals(false) &&(c.Status.Equals("Pending") || c.Status.Equals("Rejected")))
         .GroupBy(c => c.Vehicle)
        .Select(x => x.OrderByDescending(y => y.TimeStamp).First()).ToList();

答案 2 :(得分:0)

尝试使用||或运营商

   (c.Status.Equals(("Pending")|| c.Status.Equals("Rejected"));