我使用以下内容:
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.
有人可以指导我.
int[] a = {1, 2, 3, 0, 5, 0};
int x = a.Where(b => b != 0).Count();
Run Code Online (Sandbox Code Playgroud)
其他人建议使用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)
使用Where.
int x = a.Where(b => b != 0).Count();
Run Code Online (Sandbox Code Playgroud)
的选择()突出的序列的每个元素到一个新的形式.