LINQ 在字符串数组列表中搜索特定字符串

2024-02-19

我有一个字符串数组列表:

List<String[]> listOfStringArrays = something;

我需要从集合中选择所有对象,这些对象的值等于列表中任何字符串数组的第 0 个索引处的字符串。

例如,如果我只有一个简单的字符串列表,声明为:

List<String> listOfStrings = something;

我只会这样做:

var query = someCollection.Where(x => listOfStrings.Contains(x.id_num))

但显然字符串数组列表并不那么简单。

我知道我可以轻松地迭代字符串数组列表并创建一个具有第 0 个值的简单字符串列表,如下所示:

List<String[]> listOfStringArrays = something;
List<String> listOfValues = new List<String>();

foreach (string[] s in listOfStringArrays)
    listOfValues.Add(s[0]);

var query = someCollection.Where(x => listOfValues.Contains(x => x.id_num);

但我真的很想避免这种情况,并尝试将其写为一行而不引入额外的列表和循环。


您可以将所有内容放入一个查询中:

someCollection.Where(x => listOfValues.Select(y => y[0]).Contains(x => x.id_num);

但它会迭代listOfValues一遍又一遍地。

我宁愿去HashSet<string>为了让它更快:

var set = new HashSet<string>(listOfValues.Select(y => y[0]));
someCollection.Where(x => set.Contains(x));
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

LINQ 在字符串数组列表中搜索特定字符串 的相关文章

随机推荐