2014-02-11 62 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

相关问题