如何在C#列表中找到第一个出现的值而不使用LINQ遍历整个列表?

4
我有一个列表:var strings = new List<string>(); 我的列表中包含5个字符串。
 string.Add("Paul");
 string.Add("Darren");
 string.Add("Joe");
 string.Add("Jane");
 string.Add("Sally");

我希望能够遍历列表,一旦找到以“J”开头的字符串,就无需继续处理该列表。
使用LINQ是否可以实现这一点?

2
你尝试过什么?你是否浏览了LINQ方法列表,看看是否有任何方法可以实现这个目标?直接回答你的问题,是的,这是可能的。 - Servy
这个回答解决了你的问题吗?在集合中找到第一个匹配项 - Jim G.
4个回答

14

尝试:

strings.FirstOrDefault(s=>s.StartsWith("J"));

如果您不熟悉LINQ,建议先阅读C#中的101个LINQ示例


8
你可以使用FirstOrDefault
var firstMatch = strings.FirstOrDefault(s => s.StartsWith("J"));
if(firstMatch != null)
{
    Console.WriteLine(firstMatch);
}

demo


3
bool hasJName = strings.Any(x => x.StartsWith("J"));

这个检查是否存在以J开头的名称。

string jName = strings.FirstOrDefault(x => x.StartsWith("J"));

这将返回以J开头的第一个名字。如果没有以J开头的名称,则返回null


2

使用System.Linq中的First LINQ方法:

strings.First(e => e.StartsWith("J"));

如果你不确定列表中是否有元素满足条件,可以使用FirstOrDefault
strings.FirstOrDefault(e => e.StartsWith("J"));

然后,如果没有找到任何元素,它将返回null

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接