2012-01-27 29 views
17

一個特定的字符串我有一個List<string>有一些項目是這樣的:檢查清單中的字符串包含使用LINQ

{"Pre Mdd LH", "Post Mdd LH", "Pre Mdd LL", "Post Mdd LL"} 

現在我想,如果在列表中的項目包含執行檢查的條件一個特定的字符串是這樣的:

IF list contains an item that contains this_string

爲簡單起見我想如果列表至少在一個去檢查!包含例如其中具有Mdd LH的項目。

我的意思是這樣的:

if(myList.Contains(str => str.Contains("Mdd LH)) 
{ 
    //Do stuff 
} 

感謝。

回答

54

我想你想要Any

if (myList.Any(str => str.Contains("Mdd LH"))) 

這是很值得熟悉的LINQ standard query operators;除非我真的被特定操作員的表現困擾,否則我通常會使用這些方法而不是特定於實現的方法(例如List<T>.ConvertAll)。 (具體實施的方法有時可以更有效地通過了解結果的大小等)

+0

怎樣才能讓它不區分大小寫?包含沒有該超載方法。 – 2015-10-07 08:38:56

+0

@ Ankur-m:你可以使用'IndexOf'來代替,傳入'StringComparison'。如果這還不夠詳細,請提出一個新問題(當然,在搜索現有問題後)。 – 2015-10-07 08:50:28

+0

我可以使用IndexOf來做到這一點。不過,我不得不使用FindIndex而不是Any。我仍然在尋找爲什麼Any沒有工作。是的,有我在第一次搜索中找不到的類似帖子。非常感謝您的幫助! – 2015-10-07 09:21:39

12

Thast應該很容易

if(myList.Any(s => s.Contains(stringToCheck))){ 
    //do your stuff here 
} 
4

試試這個:

bool matchFound = myList.Any(s => s.Contains("Mdd LH")); 

Any()stop searching找到一個匹配的時刻,所以是相當有效率爲此任務。

6

LINQ的任何()將做的工作:

bool contains = myList.Any(s => s.Contains(pattern)); 

Any(), MSDN

確定序列中的任何元素是否滿足條件

1

如果yoou的用法中,你可能會有誤報。 假設您有一個字符串包含這樣的文本:「我的文本數據Mdd LH」 使用Contains方法,此方法將返回true以進行調用。 該方法是使用等於運算符:

bool exists = myStringList.Any(c=>c == "Mdd LH")

+0

這正是海報試圖完成的事情,在sql中「like」 ,所以這些將是'積極的積極',我想,沒有必要的平等。 – 2015-09-03 09:25:46

相關問題