获取LINQ中的所有+ ve数量

Dev*_*Das 3 .net c# linq

我使用以下内容:

int[] a = {1, 2, 3, 0, 5, 0};
int x = a.Select(b => b != 0).Count(); 
Run Code Online (Sandbox Code Playgroud)

我得到6作为值,我怎么能得到4而不是6.

有人可以指导我.

Jak*_*cki 8

int[] a = {1, 2, 3, 0, 5, 0}; 
int x = a.Where(b => b != 0).Count();
Run Code Online (Sandbox Code Playgroud)


Jon*_*eet 7

其他人建议使用Where后跟Count,但你可以更简单地做到:

int x = a.Count(b => b != 0);
Run Code Online (Sandbox Code Playgroud)

这个重载Count采用谓词,并且基本上只计算与谓词匹配的源序列的元素.

正如其他人所指出的那样,它不起作用的原因Select是只是项目 - 它不会过滤.你可以使用:

// Works but is horrible...
int x = a.Select(b => b != 0).Count(z => z);
Run Code Online (Sandbox Code Playgroud)

......但我真的建议你不要.

请注意,这不会影响您的标题所涉及的内容,即找到正值.为此,您需要:

int x = a.Count(b => b > 0);
Run Code Online (Sandbox Code Playgroud)


ada*_*ost 6

使用Where.

 int x = a.Where(b => b != 0).Count();
Run Code Online (Sandbox Code Playgroud)

选择()突出的序列的每个元素到一个新的形式.