如何在 LINQ 查询中将 Contains(string) 替换为 Contains(string[])
在 LINQ 中,Contains() 方法可以用于检查集合是否包含特定元素。默认情况下,Contains() 方法采用单个字符串参数,但是如果您需要与字符串数组进行比较怎么办?
问题:
我有一个LINQ 查询如下所示:
from xx in table where xx.uid.ToString().Contains(string[]) select xx
string[] 数组中的值是数字(例如 1、 45、20、10)。我想使用 Contains() 方法来检查数组中是否存在 xx.uid 属性(这是一个数字)。我该怎么做?
答案:
要将 xx.uid 与字符串数组进行比较,不能直接使用 Contains(string) 方法。相反,您需要将 string[] 数组转换为支持 Contains() 方法的集合。这里有两种方法:
将 string[] 数组转换为 List
var uids = new List<string>(stringArray); var selected = table.Where(t => uids.Contains(t.uid.ToString()));
如果uid也是整数,则可以将string[]数组转换为List
var uids = stringArray.Select(int.Parse).ToList(); var selected = table.Where(t => uids.Contains(t.uid));
扩展方法(可选):
您还可以为字符串创建扩展方法[ ] 类型提供一个带有字符串参数的 Contains() 方法:
public static bool Contains(this string[] arr, string value) { return arr.Any(s => s == value); }
使用此扩展方法,您可以直接对 string[] 数组使用 Contains() 方法:
var selected = table.Where(t => stringArray.Contains(t.uid.ToString()));
以上是如何在 LINQ 查询中将 Contains() 与字符串数组一起使用?的详细内容。更多信息请关注PHP中文网其他相关文章!