如何在不使用LINQ检查整个列表的情况下查找c#list中的第一个匹配项?
我有一个列表:如何在不使用LINQ检查整个列表的情况下查找c#list中的第一个匹配项?,c#,linq,C#,Linq,我有一个列表:var strings=newlist() 我的列表包含5个字符串 string.Add("Paul"); string.Add("Darren"); string.Add("Joe"); string.Add("Jane"); string.Add("Sally"); 我想迭代列表,一旦找到以“J”开头的字符串,我就不需要继续处理列表 这对LINQ有可能吗 bool hasJName = strings.Any(x => x.StartsWith("J"));
var strings=newlist()代码>
我的列表包含5个字符串
string.Add("Paul");
string.Add("Darren");
string.Add("Joe");
string.Add("Jane");
string.Add("Sally");
我想迭代列表,一旦找到以“J”开头的字符串,我就不需要继续处理列表
这对LINQ有可能吗
bool hasJName = strings.Any(x => x.StartsWith("J"));
这将检查是否存在以J开头的名称
string jName = strings.FirstOrDefault(x => x.StartsWith("J"));
这将返回以J开头的第一个名称。如果未找到以J开头的名称,则使用LINQ方法(在System.LINQ
中)返回null:
或FirstOrDefault
如果您不确定列表中的任何元素是否满足以下条件:
strings.FirstOrDefault(e => e.StartsWith("J"));
然后,如果未找到元素,则返回null
。尝试:
strings.FirstOrDefault(s=>s.StartsWith("J"));
此外,如果您是LINQ的新手,我建议您通过,您可以使用:
你试过什么?您是否浏览过LINQ方法列表,以查看是否有任何方法可以实现此目标?直接回答你的问题是的,这是可能的。
strings.FirstOrDefault(s=>s.StartsWith("J"));
var firstMatch = strings.FirstOrDefault(s => s.StartsWith("J"));
if(firstMatch != null)
{
Console.WriteLine(firstMatch);
}