简体   繁体   English

检查是否列出 <List<string> &gt;包含一个字符串

[英]Check if List<List<string>> contains a string

How can I check if any List<string> s in a List contain a given string? 我如何检查是否有任何List<string> S IN一个List包含给定的字符串? I know how to do this with a loop, but is there a way with LINQ/in one line? 我知道如何使用循环执行此操作,但LINQ /在一行中是否有办法?

if (lists.Any(sublist => sublist.Contains(str)))
var t=lists.SelectMany(f=>f).Contains("str");

full sample : 完整样本:

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");

result 结果

no

ps PS

ofcourse - this can be shorten to : 当然 - 这可以缩短为:

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

你可以这样做:

bool ifExists = list.Any(x => x.Contains(yourString));

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM