检查列表中的字符串是否包含Linq的特定字符串

时间:2012-01-27 11:31:03

标签: c# linq

我有List<string>,其中包含以下内容:

{"Pre Mdd LH", "Post Mdd LH", "Pre Mdd LL", "Post Mdd LL"}

现在我想执行一个条件来检查列表中的项是否包含特定字符串。类似的东西:

IF list contains an item that contains this_string

为了简单起见我想至少检查一下这个列表!包含例如其中包含Mdd LH的项目。

我的意思是:

if(myList.Contains(str => str.Contains("Mdd LH))
{
    //Do stuff
}

感谢。

5 个答案:

答案 0 :(得分:66)

我想你想要Any

if (myList.Any(str => str.Contains("Mdd LH")))

值得熟悉LINQ standard query operators;我通常会使用那些而不是特定于实现的方法(例如List<T>.ConvertAll),除非我真的被特定运算符的性能所困扰。 (通过了解结果的大小等,特定于实现的方法有时可以更有效。)

答案 1 :(得分:13)

这应该很容易

if( myList.Any( s => s.Contains(stringToCheck))){
  //do your stuff here
}

答案 2 :(得分:7)

LINQ Any()可以完成这项工作:

bool contains = myList.Any(s => s.Contains(pattern));

Any(), MSDN

  

确定序列的任何元素是否满足条件

答案 3 :(得分:6)

试试这个:

bool matchFound = myList.Any(s => s.Contains("Mdd LH"));

Any()会在找到匹配的那一刻stop searching,因此对此任务非常有效。

答案 4 :(得分:3)

如果你使用Contains,你可能会得到误报。 假设您有一个包含此类文本的字符串:&#34;我的文本数据Mdd LH&#34; 使用Contains方法,此方法将返回true以进行调用。 方法是使用equals运算符:

bool exists = myStringList.Any(c=>c == "Mdd LH")