c#如何使用LINQ基于另一个List中的值获取List中的值计数

时间:2016-03-24 04:12:19

标签: c# linq list

我理解你如何得到List的计数,其中每个值可能有一些数字。例如,如果我想要“ListA”中值等于1的次数,我会执行以下操作:

int countOf1=ListA.Count(x => x ==1);

如果我有多个列表,并且我想获得ListA等于某个值的ListB计数,我该如何修改上述命令呢?

为了说明这个问题,我将在电子表格中显示一个图片,看看它会是什么样子。在图片中,您可以看到ListA和ListB将始终具有相同数量的值,因为我希望每行的信息都是各种各样的“观察”。

我可以通过循环执行此操作,但我希望我的脚本更简单一些。我也意识到这个例子,我可以得到ListA的数量,其中值等于1.但是我将来还有其他一些我想做的事情,比如ListB上的计算平均值,百分位数或其他聚合,其中ListA等于某个值。

这可能吗?

Picture of Lists

1 个答案:

答案 0 :(得分:2)

所以看起来你要做的就是将列表A加入到列表B中。你没有在你的问题中指明两个列表应该如何加入但是根据你的图像我猜你想要这样做通过索引 - 即A [0]到B [0],A [1]到B [1]等。如果是这种情况,您可以使用Zip。然后,如果您想取A等于1的B的平均值,例如,您可以执行以下操作:

ListA
.Zip(
    ListB,
    (a, b) => new { A = a, B = b })
.Where(x => x.A == 1)
.Average(x => x.B);