c# - 检查列表是否包含包含字符串的元素并获取该元素

标签 c# .net linq list contains

在寻找这个问题的答案时,我遇到了使用 LINQ 的类似答案,但我无法完全理解它们(因此无法实现它们),因为我不熟悉它。基本上,我想要的是:

  1. 检查列表的任何元素是否包含特定字符串。
  2. 如果是,则获取该元素。

老实说,我不知道该怎么做。我能想到的是这个(当然不工作):

if (myList.Contains(myString))
    string element = myList.ElementAt(myList.IndexOf(myString));

我知道为什么它不起作用:

  • myList.Contains() 不返回 true,因为它将检查列表的整个元素是否与我指定的字符串匹配。
  • myList.IndexOf() 不会找到任何匹配项,因为再次出现这种情况时,它将检查与字符串匹配的元素。

仍然,我不知道如何解决这个问题,但我认为我必须按照与我的类似问题中的建议使用 LINQ。话虽这么说,如果是这种情况,我希望回答者向我解释在他们的示例中使用 LINQ(正如我所说,我在使用 C# 时并没有为此烦恼)。提前谢谢你们(和女孩们?)。

编辑:我想出了一个解决方案;只需遍历列表,检查当前元素是否包含该字符串,然后设置一个等于当前元素的字符串。不过,我想知道还有比这更有效的方法吗?

string myString = "bla";
string element = "";

for (int i = 0; i < myList.Count; i++)
{
    if (myList[i].Contains(myString))
        element = myList[i];
}

最佳答案

您应该可以在这里使用 Linq:

var matchingvalues = myList
    .Where(stringToCheck => stringToCheck.Contains(myString));

如果您只想返回第一个匹配项:

var match = myList
    .FirstOrDefault(stringToCheck => stringToCheck.Contains(myString));

if(match != null)
    //Do stuff

关于c# - 检查列表是否包含包含字符串的元素并获取该元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18767302/

相关文章:

c# - Office365 API : OAuth2 AccessTokens for app-only require that the

c# - 如何从代码契约(Contract)中自动生成建议的要求?

.net - ADO.NET 和 SQLBULKCOPY - 要插入的最大记录限制?

c# - Entity Framework 4.0 : Method cannot be translated into a store expression

c# - 具有分层数据模板和多种类型的 WPF TreeView

c# - 为什么在 RestClient.Execute 工作时将 RestClient.ExecuteAsync 与 await 一起使用会静默失败?

c# - 专门针对旧版本的单个 .NET Standard API/命名空间(Entity Framework Core)

c# - 在 C# 控制台应用程序中检测按键是否按下,无需等待按键

c# - 简单的 C# foreach to LINQ 问题

c# - GroupBy 使用 [Flag] 枚举按单个枚举进行分组