LINQ 等效于 SELECT WHERE xx IN (col1, col2, ...)
LINQ equivalent to SELECT WHERE xx IN (col1, col2, ...)
我正在使用 C# 中的 LINQ 进行搜索。
基本在SQL,就是
SELECT *
FROM myDB
WHERE searchTerm IN (col1, col2, . . . );
因为我找不到在 LINQ 中执行此操作的方法,所以我就是这样做的。
var v = (from item in myDB
where item.COL1.Contains(searchTerm)
|| item.COL2.Contains(searchTerm)
|| item.COL3.Contains(searchTerm)
...
select item);
有更聪明的方法吗?
您的 SQL 代码相当于:
from item in myDB
where item.COL1 == searchTerm
|| item.COL2 == searchTerm
|| item.COL3 == searchTerm
...
select item
或者:
myDB.Where(item => item.COL1 == searchTerm
|| item.COL2 == searchTerm
|| item.COL3 == searchTerm
...)
由于您使用的是有限的 hard-coded 列列表,因此以这种方式在代码中保留一些重复可能没问题。如果您需要动态的列列表,您可以构建一个条件列表并使用 code like this 将这些条件“或”在一起。
我正在使用 C# 中的 LINQ 进行搜索。
基本在SQL,就是
SELECT *
FROM myDB
WHERE searchTerm IN (col1, col2, . . . );
因为我找不到在 LINQ 中执行此操作的方法,所以我就是这样做的。
var v = (from item in myDB
where item.COL1.Contains(searchTerm)
|| item.COL2.Contains(searchTerm)
|| item.COL3.Contains(searchTerm)
...
select item);
有更聪明的方法吗?
您的 SQL 代码相当于:
from item in myDB
where item.COL1 == searchTerm
|| item.COL2 == searchTerm
|| item.COL3 == searchTerm
...
select item
或者:
myDB.Where(item => item.COL1 == searchTerm
|| item.COL2 == searchTerm
|| item.COL3 == searchTerm
...)
由于您使用的是有限的 hard-coded 列列表,因此以这种方式在代码中保留一些重复可能没问题。如果您需要动态的列列表,您可以构建一个条件列表并使用 code like this 将这些条件“或”在一起。