2011-02-11 76 views
0

我有一系列搜索項和一個句子。我需要測試的一句話包含了所有的搜索詞:如何測試列表a中的所有項目都在列表中b

var searchTerms = "fox jumped".Split(' '); 
var sentence = "the quick brown fox jumped over the lazy dog".Split(' '); 
var test = sentence.Contains(searchTerms); 

我exptected測試爲True - howerver我得到一個編譯錯誤: 「字符串[]」不包含定義「包含」和最好的擴展方法重載'System.Linq.Queryable.Contains(System.Linq.IQueryable,TSource)'有一些無效參數

我應該如何測試該句子包含所有的搜索條件?

回答

3

你想檢查是否有沒有出現在句子中的任何搜索字詞:

if (!searchTerms.Except(sentence, StringComparer.CurrentCultureIgnoreCase).Any()) 
+0

將searchTerms.Any(長期= >!sentence.contains(term))執行得更快,還是它們都會編譯爲相同的IL? (得愛IEnumerable) – jbehren 2011-02-11 15:02:36

+0

@jbehren:這太慢了。它是O(n²),因爲它需要每次循環遍歷另一個列表。 – SLaks 2011-02-11 15:03:01

1

你可以這樣做:

//test if all of the terms are in the sentence 
searchTerms.All(term => sentence.Contains(term)); 
相關問題