3

如何检查 a 中的任何List<string>s是否List包含给定的字符串?我知道如何用循环来做到这一点,但是有没有办法用 LINQ/in 一行?

4

4 回答 4

9
if (lists.Any(sublist => sublist.Contains(str)))
于 2013-03-24T14:19:09.393 回答
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();

在此处输入图像描述

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

结果

no

ps

当然 - 这可以缩短为:

if (lists.SelectMany(f=>f).Contains("k"))...
于 2013-03-24T14:23:18.660 回答
0

你可以这样做:

bool ifExists = list.Any(x => x.Contains(yourString));
于 2013-03-24T14:22:04.107 回答
0

只是为了添加到现有答案,鉴于您的列表已排序且很大,可能会比或BinarySearch更快。ContainsAny

于 2013-03-24T14:23:41.673 回答