linq - 选择不等于某事的元素

时间:2011-11-03 03:37:44

标签: c# linq

假设我有一组字符串。 如何选择不包含特定参数值的所有元素?

List<string> TheList = .....

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

我在考虑s!=参数的位置,但我想知道是否有更清洁的方法。

感谢。

3 个答案:

答案 0 :(得分:7)

如果您不需要 new 列表,则不需要Linq - 使用Remove() - 这样可以避免创建新列表:

如果要删除所有等于Parameter的字符串:

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

如果要删除包含Parameter的所有字符串(问题不明确):

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

答案 1 :(得分:3)

你的意思是:

List<string> TheList = ..... 

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

答案 2 :(得分: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)