Linq多个查询用或运算符

时间:2012-09-25 08:52:15

标签: c# linq linq-to-sql

我有一个List<string> filterCriteria,其中包含一个或多个关键字,可根据客户端的用户选择搜索数据库中的列。

我遇到的问题是我不太确定如何构建我的linq到sql语句,因为它可能没有'或'运算符,或者它可能有多个(10 +)。

这是我的原始查询

var originalQuery = (from p in productContext.Products
                         select p);

然后根据列表我需要通过我的List<string> filterCriteria使用或运算符来查询'originalQuery'。

E.g。

    originalQuery = originalQuery.Where(p => p.ProductRange == "criteria1" || 
    p.ProductRange == "criteria2");

等等......

3 个答案:

答案 0 :(得分:2)

你可以这样做:

originalQuery = originalQuery.Where(p => filterCriteria.Contains(p.ProductRange));

这样,您将获得原始查询中具有ProductRange所选值之一的所有项目。

答案 1 :(得分:1)

您可以使用Any的另一种方式:

originalQuery.Where(p => filterCriteria.Any(c => c == p.ProductRange));

答案 2 :(得分:1)

另一种写作与马丁相同的方式:

var originalQuery = 
    from p in productContext.Products 
    where filterCriteria.Contains(p.ProductRange)
    select p;