1

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

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

这是我的原始查询

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

然后根据列表,我需要通过List<string> filterCriteria使用或运算符中的单词查询“originalQuery”。

例如

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

等等...

4

3 回答 3

2

你可以这样做:

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

这样,您将获得 originalQuery 中具有 ProductRange 选定值之一的所有项目。

于 2012-09-25T08:57:09.317 回答
1

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

originalQuery.Where(p => filterCriteria.Any(c => c == p.ProductRange));
于 2012-09-25T09:05:16.907 回答
1

与 Martin 相同的另一种写法:

var originalQuery = 
    from p in productContext.Products 
    where filterCriteria.Contains(p.ProductRange)
    select p;
于 2012-09-25T09:21:57.940 回答