检查 List<List<string>> 是否包含一个字符串。

3

如何检查 List 中的任何 List<string> 是否包含给定字符串?我知道如何使用循环来实现这一点,但是否有一种使用 LINQ/一行代码的方法呢?

4个回答

9
if (lists.Any(sublist => sublist.Contains(str)))

1
var t=lists.SelectMany(f=>f).Contains("str");

完整示例:

var lists = new List<List<string>>();

lists.Add(new List<string>(){"a","b"});
lists.Add(new List<string>(){"b","2"});
lists.Add(new List<string>(){"c","5"});
lists.Add(new List<string>(){"d","7"});

var t=lists.SelectMany(f=>f);

t.Dump();

enter image description here

if (t.Contains("k")) 
  Console.WriteLine ("yes") ;
else 
  Console.WriteLine ("no");

结果
no

p.s.

当然,这可以简写为:

if (lists.SelectMany(f=>f).Contains("k"))...

0

仅补充现有答案,如果您的列表已排序且较大,则BinarySearch可能比ContainsAny更快。


0
你可以这样做:
bool ifExists = list.Any(x => x.Contains(yourString));

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接