【问题标题】:Check if a string within a list contains a specific string with Linq使用 Linq 检查列表中的字符串是否包含特定字符串
【发布时间】:2012-01-27 11:31:03
【问题描述】:

我有一个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
}

谢谢。

【问题讨论】:

    标签: c# linq


    【解决方案1】:

    我想你想要Any:

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

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

    【讨论】:

    • 我们怎样才能使它不区分大小写搜索? Contains 没有那个重载方法。
    • @Ankur-m:你可以使用IndexOf,传入StringComparison。如果这还不够详细,请提出一个新问题(当然是在搜索现有问题之后)。
    • 我可以使用 IndexOf 来完成。但是我不得不使用 FindIndex 而不是 Any。我仍在寻找为什么 Any 不起作用。是的,我第一次搜索时找不到类似的帖子。非常感谢您的帮助!
    • @Ankur-m:好吧,如果您仍然感到困惑,我建议您提出一个新问题 - 如果您不需要索引,那么 Any 应该可以工作。
    • @ManikArora:因为任何字符串都“包含”空字符串。这更多是关于string.Contains 而不是Any。见docs.microsoft.com/en-us/dotnet/api/…
    【解决方案2】:

    这应该很容易

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

    【讨论】:

      【解决方案3】:

      试试这个:

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

      Any() 将在找到匹配项时stop searching,因此对于此任务非常有效。

      【讨论】:

        【解决方案4】:

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

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

        Any(), MSDN:

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

        【讨论】:

          【解决方案5】:

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

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

          【讨论】:

          • 这正是张贴者试图完成的,在 sql 中的“喜欢”,所以我猜这些将是“积极的积极因素”,没有必要。
          猜你喜欢
          • 2021-11-26
          • 1970-01-01
          • 2014-07-08
          • 1970-01-01
          • 1970-01-01
          • 2020-02-26
          • 2012-10-25
          • 2021-06-17
          • 1970-01-01
          相关资源
          最近更新 更多