C# 如何基于长度不固定的列表构建linq或条件

C# 如何基于长度不固定的列表构建linq或条件,c#,linq,C#,Linq,我想在Linq中建立一个OR条件。条件是基于列表的。 例如: // list.count == 2 c=>c.state_id==list[0] or c.state_id == list[1]; // list.count == 3 c=>c.state_id==list[0] or c.state_id == list[1] or c.state_id == list[2]; 因为列表的长度不是固定的,所以如何建立这样的条件? 谢谢您可以使用Contains构建查询: c =

我想在Linq中建立一个OR条件。条件是基于列表的。 例如:

// list.count == 2
c=>c.state_id==list[0] or c.state_id == list[1];

// list.count == 3
c=>c.state_id==list[0] or c.state_id == list[1] or c.state_id == list[2];
因为列表的长度不是固定的,所以如何建立这样的条件?
谢谢

您可以使用
Contains
构建查询:

c => list.Contains(c.state_id);

您可以使用
Contains
构建查询:

c => list.Contains(c.state_id);

另一种方法是使用
JOIN

from c in states
join l in list on c.state_id equals l
select c;

另一种方法是使用
JOIN

from c in states
join l in list on c.state_id equals l
select c;

一种方法是使用
包含
。例如,检查此答案:一种方法是使用
包含
。检查这个答案,例如:Impl。注意:EF5(可能超过)和L2S绑定单个参数,因此SQL Server有~2k-3k列表长度限制。您希望在
子句中构建SQL
,因此使用LINQ
Contains()
method.Impl。注意:EF5(可能超过)和L2S绑定单个参数,因此SQL Server有~2k-3k列表长度限制。您希望在
子句中构建SQL
,因此使用LINQ
Contains()
方法。