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 将这些条件“或”在一起。