我有一个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");
等等......
答案 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;