对List的每个数组中的元素计数
本文关键字:数组 元素 List Array | 更新日期: 2023-09-27 18:12:31
如何计算列表中每个数组中等于0
的元素?
我有一个列表List<byte[]> piks
。我想数一下在每个byte[]
中有多少元素与0
相等。
我尝试了几种方法:
from c in piksle_lista_tablic[84]
where (c.Equals(0))
select c
或
piksle_lista_tablic[84].Count(n => n == 0)
,我总是得到错误Expression cannot contain lambda expressions
。
:piks[1]
是一个包含1156
项的数组,我想知道该数组中有多少特定元素。
PS:我可以在观察窗口使用Linq吗?
var results = from arr in piks
select arr.Where(b=>b==0).Count()
代码将迭代数组列表,并为每个数组找到等于0的元素,并返回一个IEnumerable,其中包含每个数组的计数。我更喜欢where count而不是count(选择器),但这是一个品味问题。我怀疑是否会有明显的性能差异
给你ps 1是的,你可以在调试时使用linq,但这通常是一种痛苦,因为linq语句是一个语句,在方法中分割它有时可以帮助调试,但我不喜欢为了调试器而编写代码。
编辑根据你的评论:不,你不能在观察窗口中使用Lambda。您可以在监视窗口中使用Linq,但只能作为方法调用,并且只能用于命名函数
试试这个:
var zero_counts = piks.Select(p => p.Count(c => c == 0));
ps1。我可以尝试在调试时使用linq吗?
Visual Studio在观察窗口中不支持lambda表达式。
- VS调试" quick watch "工具和lambda表达式
List<byte[]> piks;
// Fill piks...
int zeroValuesCount = 0;
foreach (var pik in piks) {
zeroValuesCount += pik.Count(x => x == 0);
}
如果您想计算全局总数,您可以这样做:
piks.SelectMany(p => p).Count(p => p == 0);
对于每个数组你可以这样做:
piks.Select(p => p.Count(p => p == 0));