2013-02-01 26 views
3

我有一個列表:var strings = new List<string>();如何在C#列表中查找第一次出現,而無需通過LINQ查看整個列表?

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

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

我想迭代列表,只要找到以「J」開頭的字符串,我不需要繼續處理列表。

LINQ可以嗎?

+1

有什麼你試過了嗎?您是否瀏覽了LINQ方法列表,看看是否有人能夠實現這一目標?直接回答你的問題是的,這是可能的。 – Servy

回答

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

這將檢查是否存在以J開頭的任何名稱。

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

這將返回如果沒有發現開始的J名稱與J.開始的第一個名字,它返回null

1

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

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

或者FirstOrDefault如果你不知道,在你的列表中的任何元素將滿足條件:

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

然後,返回如果沒有找到元素,則返回null

6

您可以使用FirstOrDefault也:

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

demo

相關問題