首页 >后端开发 >C++ >如何在 LINQ 查询中将 Contains() 与字符串数组一起使用?

如何在 LINQ 查询中将 Contains() 与字符串数组一起使用?

Susan Sarandon
Susan Sarandon原创
2024-12-27 07:19:09121浏览

How to Use Contains() with a String Array in LINQ Queries?

如何在 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() 方法的集合。这里有两种方法:

  1. 使用 List

将 string[] 数组转换为 List然后在列表上使用 Contains() 方法:

var uids = new List<string>(stringArray);
var selected = table.Where(t => uids.Contains(t.uid.ToString()));
  1. 使用列表; (如果uid也是int):

如果uid也是整数,则可以将string[]数组转换为List;然后使用列表上的 Contains() 方法:

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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn