2011-11-03 24 views
2

假设我有一个字符串集合。 如何选择所有不包含特定参数值的元素?linq - 选择不等于东西的元素

List<string> TheList = ..... 

var TheCleanList = (from s in TheList 
        where s != parameter 
        select s).ToList(); 

我想其中S!=参数,但我不知道是否有一个更清洁的方式来做到这一点。

谢谢。

+0

就这样很好......它有什么问题吗? –

回答

6

如果您不需要列表中,您不需要LINQ的这个 - 使用Remove() - 这避免了创建一个新的列表:

如果你想删除等于Parameter所有字符串:

TheList.RemoveAll(s => s == Parameter); 

如果你想删除包含Parameter(不清楚从你的问题)的所有字符串:

TheList.RemoveAll(s => s.Contains(Parameter)); 
+0

好的,很酷;我需要包含版本。再次感谢。 – frenchie

3

你的意思是:

List<string> TheList = ..... 

var TheCleanList = (from s in TheList 
        where !s.Contains(parameter) 
        select s).ToList(); 
2

您可以使用String.Contains

var TheCleanList = (from s in TheList 
        where !s.Contains(parameter) 
        select s).ToList(); 

或者

var TheCleanList = TheList.Where(s => !s.Contains(parameter)).ToList(); 

String.Contains是区分大小写的。如果你想有一个案例钝感:

string lower = parameter.ToLower(); 
... 
where s.ToLower().Contains(lower) 
+1

只有一个建议,可能会提到string.contains像!=,==等是一个区分大小写的评估。正如我所看到的很多,包括我自己忘记有时Linq不是TSQL和它的大小写敏感。 – Nickz