2016-03-04 79 views
0

我有这个名单定义为属性:从列表<>选择项目

List<string> colors= new List<string>(); 
colors.Add("Red"); 
colors.Add("Blue"); 
colors.Add("Green"); 
colors.Add("Black"); 

而且我有这样的功能:

private List<string> getColors(string colorName , List<string> headers) 
{ 
    List<string> list2return = colors(return all colors except red and black); 
    return list2return ; 
} 

我的问题是如何从列表中选择所有项目,除了redblack

回答

7

像这个?:

colors.Where(c => !c.Equals("Red") && !c.Equals("Black")).ToList() 

或者,如果你需要它是不区分大小写:

colors.Where(c => 
    !c.Equals("Red", StringComparison.InvariantCultureIgnoreCase) && 
    !c.Equals("Black", StringComparison.InvariantCultureIgnoreCase) 
).ToList() 

(虽然它不是真的不清楚为什么该方法具有不被参数或者如何获得colors变量,因为它真的看起来不像一个班级成员。)

+0

'=>'如何工作?这个构造在C#中如何使用/调用? – Juraj

+1

寻找Lambda表达式 –

+0

@Juraj - 在这种情况下,我在头脑中将它读为'用于任何颜色c' *,使得*'c不是黑色且c不是红色'。这有帮助吗? –

2

另一种方法是这样的:

colors.Except(new[] { "Red", "Black" }); 
+0

这不提供问题的答案。一旦你有足够的[声誉](http://stackoverflow.com/help/whats-reputation),你将能够[评论任何职位](http://stackoverflow.com/help/privileges/comment);相反,[提供不需要提问者澄清的答案](http://meta.stackexchange.com/questions/214173/why-do-i-need-50-reputation-to-comment-what-c​​an- I-DO-代替)。 - [来自评论](/ review/low-quality-posts/11506933) – theMayer

+0

@theMayer [看起来有效](https://msdn.microsoft.com/en-us/library/bb300779(v = vs.90)。 aspx?cs-save-lang = 1&cs-lang = csharp#code-snippet-2)给我,并且比'color.Where(/ * ... * /);' – OhBeWise

+0

看起来更像是一个评论。通常,我们喜欢包含比“在这里,尝试这个”更多解释的答案。 – theMayer

相关问题