2014-02-11 99 views
2

我有一個名爲「市場」的字符串列表。我想通過比較一個子字符串(即:「Sa」,「San」,「san」)而不是確切的字符串來將市場過濾爲2個字符串:「San Francisco」和「San Jose」。你怎麼能這樣做?如何比較列表中的項目與子字符串?

這是我的,它只接受確切的字符串。

List<string> markets = getAllMarkets(); 

var marketList = new List<string>(); 
marketList.Add("San"); 

markets = markets.Where(marketList.Contains); 

隨着上面的代碼,市場將有0元素,因爲沒有名爲「San」的市場。

回答

7

marketList匹配任何:

markets.Where(i => marketList.Any(marketListItem => 
    i.ToLower().Contains(marketListItem.ToLower())); 
+2

我有一種感覺,他想添加另一個級別(搜索'marketList'中的每個條目,而不僅僅是「san」)。 –

+0

我可以補充說。錯誤的問題。 –

+0

Jeroen是正確的。我沒有在Contains()中傳入字符串,而是使用了一個字符串列表。 –

1
List<string> markets = getAllMarkets(); 

var marketList = new List<string>(); 
marketList.Add("San"); 

markets = markets.Where(marketList.Contains); 

for(int i = 0; i < marketList.Count; i++) 
{ 

    for(int a = 0; a < marketList.Count; a++) 
    { 
     markets[a] = markets[i].Where(marketList.Contains); 
    } 
} 

也許有比較兩份名單的循環?我想我可能會錯過你想要在這裏完成的事情。

+0

以使其不區分大小寫,將列表中的文本轉換爲大寫或小寫以及然後比較。 – Ronnie

+0

你可以參考我們上面的對話。我正在尋找一種純粹的LINQ解決方案,因爲它節省了代碼行。感謝您的迴應! –

+0

沒問題。謝謝! – Ronnie

相關問題