sql - 使用 LINQ 动态改变 'where' 语句中的条件数

标签 sql vb.net linq where-clause

我正在使用 LINQ(在 mvc 中)处理我的第一个项目,所以我可能错过了一些非常简单的东西。然而,经过一天的搜索和试验,没有发现任何有用的东西,因此发布了这篇文章。

我正在尝试编写一个 LINQ 查询 (Linq to SQL),它将在 where 语句中包含多个条件,这些条件由 OR 或 AND 分隔。直到运行时,我们才知道查询中会有多少条件。这是一个搜索过滤器控件,用户可以在其中选择多个条件进行过滤。

select * from table
where table.col = 1 
    OR table.col = 2
    OR table.col = 7
    .... 'number of other conditions

之前,我只是将 SQL 查询构造为一个字符串,同时遍历所有条件。但是,在 LINQ 中似乎应该有一种很好的方法来执行此操作。 我曾尝试使用表达式树进行查找,但目前它们似乎有点让我头疼。另一个想法是在 where 语句中执行一个 lambda 函数,如下所示:

For Each value In values
    matchingRows = matchingRows.Where(Function(row) row.col = value)

但是,这仅适用于 AND 条件。我如何进行 OR?

最佳答案

我会使用 PredicateBuilder为了这。它使动态 WHERE 子句变得非常容易。

关于sql - 使用 LINQ 动态改变 'where' 语句中的条件数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2194011/

相关文章:

vb.net - 我是初学者,不明白为什么我的代码会抛出 "Expression Expected"

c# - 使用导航属性的 T-SQL 到 LINQ to SQL

mysql - MySQL 数据库中有一列 LONGTEXT 的内存消耗

mysql - 两个字段的全文搜索比一个字段的全文搜索快

sql - 正确关闭 Ruby on Rails 中的 SQL 连接?

vb.net - 发生 COMException - 未知名称。 (来自 HRESULT : 0x80020006 (DISP_E_UNKNOWNNAME)) when trying to modify an existing excel file 的异常

vb.net - InvalidCastException 未处理?

c# - 十进制算术溢出

c# - LINQ List 搜索多个列表。返回单个列表

sql - 查找上周日