c# - Linq Where条件匹配数组

标签 c# asp.net-mvc linq lambda

我的模型中有一个从数据库中获取的 linq 列表。现在我有一个从我的 Controller 获得的字符串数组。我要构造一个语句

伪代码

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> Method 检查数组是否包含某些项目:

bool strarrayContainsX = Array.IndexOf<string>(strarray, "X") >= 0;

不过,我建议您使用 HashSet<string>而不是用于多个项目的字符串数组。 The HashSet<T> Class提供一个 Contains Method检查集合是否包含某些项目:

HashSet<string> strset = new HashSet<string>(strarray);
bool strsetContainsX = strset.Contains("X");

结果查询如下所示:

var k = objlist.Where(u => strset.Contains(u.somecol)).ToList();

关于c# - Linq Where条件匹配数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18288290/

相关文章:

c# - 不区分大小写的字符串比较在 C# 中不起作用?

asp.net - 限制每页表中的行数

c# - 如何触发 Windows 的用户凭据提示?

c# - DbContext.SaveChanges();不给出错误但不将实体添加到数据库

c# - 如何扫描和验证网站的 TLS 版本?

javascript - 在 .NET MVC 中保留 javascript 状态

javascript - ASP.NET MVC 3 和 Google map API

C# - SerialPort.ReadLine() 卡住我的程序

c# - 在 Razor 中以正确的方式使用 C# 6 字符串插值

c# - 如何创建调用 IEnumerable<TSource>.Any(...) 的表达式树?