Linq Where匹配数组的条件

Flo*_*ind 3 c# linq asp.net-mvc lambda

大家好我有一个从我的模型中的数据库获得的linq列表.现在我有一个从我的控制器获得的字符串数组.我想构建一个声明

伪代码

List<object> objlist = db.objects.tolist();
string[] strarray; // obtained from a long code.
var k = objlist.Where(u => u.somecol == strarray[0] || u.somecol == strarray[1]........strarray[n]).toList();
Run Code Online (Sandbox Code Playgroud)

我有点困惑如何实现这一点,因为我strarray[]的长度可变,最多可包含1000个单词.

dtb*_*dtb 8

您可以使用Array.IndexOf <T>方法检查数组是否包含某个项目:

bool strarrayContainsX = Array.IndexOf<string>(strarray, "X") >= 0;
Run Code Online (Sandbox Code Playgroud)

但是,我建议您使用HashSet <string>而不是字符串数组来处理多个项目.HashSet <T>类提供了一个Contains方法来检查一个集合是否包含某个项目:

HashSet<string> strset = new HashSet<string>(strarray);
bool strsetContainsX = strset.Contains("X");
Run Code Online (Sandbox Code Playgroud)

结果查询如下所示:

var k = objlist.Where(u => strset.Contains(u.somecol)).ToList();
Run Code Online (Sandbox Code Playgroud)