如何在 linq 中编写 contains 语句?

How do I write a contains statement in linq?

我想 select 记录任何 selected 字段为 1 的记录。

decimal myNumber = 1;
query = from q in query where myNumber.Contains(q.trial, q.score, q.id) select q;

在sql我会写

select trial, score, id
from query q
where 1 in (q.trial, q.score, q.id)

如何使用 linq 复制 sql?

您可以使用 array 并使用 Contains 方法,例如:

var query = from q in query
            where new[]{q.trial, q.score, q.id}.Contains(myNumber)  
            select q;

相反,当您有很多值并且需要与单个列进行比较时,您可以这样做:

var myValues = new[] {1, 2, 3, 4, 5};
var query = from q in query
            where myValues.Contains(q.trial)  
            select q;

详细阐述@Felipe 的 post:

var found = from q in query
    let arr = new []{ q.trial, q.score, q.id}
    where arr.Contains(1)
    select q;

编辑: 看起来@Felipe 更新了他的 post 以使用动态创建的数组。我将保留我的 post 来演示 LINQ 查询 (let) 中变量的用法。这对于偶尔的情况很有用。