【发布时间】:2013-09-17 00:27:28
【问题描述】:
在寻找这个问题的答案时,我遇到了使用 LINQ 的类似问题,但我无法完全理解它们(因此,实现它们),因为我不熟悉它。我想要的基本上是这样的:
- 检查列表的任何元素是否包含特定字符串。
- 如果有,请获取该元素。
老实说,我不知道该怎么做。我能想到的是这个(当然不工作):
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];
}
【问题讨论】:
-
正如我在回答中提到的,旧时尚循环(就像您的问题一样)几乎总是最快的。但如果你足够关心,你可以对其进行测试。
-
您的列表中可能有多个字符串包含您的字符串
myString,在您当前的循环中,您将获得最后一个元素。这取决于你是要找到第一个还是最后一个,如果你只想找到第一个,然后在找到该项目后打破循环。
标签: c# .net linq list contains