如何在不使用LINQ查看整个列表的情况下在c#list中找到第一个匹配项?

时间:2013-02-01 21:42:19

标签: c# linq

我有一个列表:var strings = new List<string>();

我的列表包含5个字符串。

 string.Add("Paul");
 string.Add("Darren");
 string.Add("Joe");
 string.Add("Jane");
 string.Add("Sally");

我想迭代列表,一旦找到以“J”开头的字符串,我就不需要继续处理列表了。

这可以用LINQ吗?

4 个答案:

答案 0 :(得分:11)

尝试:

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

如果您是LINQ的新手,我建议您浏览101 LINQ Samples in C#.

答案 1 :(得分:6)

您可以使用FirstOrDefault

var firstMatch = strings.FirstOrDefault(s => s.StartsWith("J"));
if(firstMatch != null)
{
    Console.WriteLine(firstMatch);
}

demo

答案 2 :(得分:2)

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

这将检查是否存在以J开头的任何名称。

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

这将返回以J.开头的第一个名称。如果找不到以J开头的名称,则返回null

答案 3 :(得分:1)

使用First LINQ方法(在System.Linq中):

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

FirstOrDefault如果您不确定列表中的任何元素是否满足条件:

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

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