LinqWhere条件匹配数组
本文关键字:数组 条件 LinqWhere | 更新日期: 2023-09-27 18:28:04
我有一个从模型中的数据库中获得的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();
我有点困惑如何实现这一点,因为我的strarray[]
是可变长度的,最多可以包含1000个单词。
您可以使用array.IndexOf<T>方法:
bool strarrayContainsX = Array.IndexOf<string>(strarray, "X") >= 0;
但是,我建议您使用HashSet<字符串>而不是用于多个项目的字符串数组。哈希集<T>类提供了一个Contains方法来检查集合是否包含某些项:
HashSet<string> strset = new HashSet<string>(strarray);
bool strsetContainsX = strset.Contains("X");
结果查询如下所示:
var k = objlist.Where(u => strset.Contains(u.somecol)).ToList();
使用Contains
:
var k = objlist.Where(u => strarray.Contains(u.somecol)).toList();
试试这个:
List<object> objlist = db.objects.tolist();
string[] strarray; // obtained from a long code.
var k = objlist.Where(u => strarray.Contains(u.somecol)).toList();
var k = objlist.Where(u => strarray.Any(x=>x == u.somecol)).ToList();