linq 中计算列表百分比的最佳方法是什么?
我有一个 1 和 0 的列表,现在我必须计算百分比含义,如果 1 他实现了,否则他没有实现。例如,
{1,1,0,0,0}
如果列表有 5 个项目,而他有 2 个,那么他的百分比是 40%。 LINQ 中是否有一种函数或方法可以让我在一行中轻松完成?我确信 LINQ 专家有一种温和的方法来做到这一点?
I have a list of 1s and 0s and I have to now calculate the percent meaning if 1 he achieved it else he doesn't. So e.g -
{1,1,0,0,0}
So for e.g If List has 5 items and he got 2 ones then his percent is 40%. Is there a function or way in LINQ I could do it easily maybe in one line ? I am sure LINQ experts have a suave way of doing it ?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
所示
或者如果您想获取特定元素的百分比
编辑,
请注意 BrokenGlass 的解决方案,并针对第一种情况使用
Average
扩展方法,如下What about
or if you want to get the percentage of a specific element
EDIT
Note BrokenGlass's solution and use the
Average
extension method for the first case as in在这种特殊情况下,您还可以使用
Average()
:In this special case you can also use
Average()
:如果您使用任何
ICollection
(例如List
),Count
属性可能 为 O(1);但在 any 序列的更一般情况下,Count()
扩展方法将是 O(N),使其不太理想。因此,对于最一般的情况,您可能会考虑这样的方法,它一次性计算与指定谓词匹配的元素和所有元素:然后您只需执行以下操作:
输出:
If you're working with any
ICollection<T>
(such asList<T>
) theCount
property will probably be O(1); but in the more general case of any sequence theCount()
extension method is going to be O(N), making it less than ideal. Thus for the most general case you might consider something like this which counts elements matching a specified predicate and all elements in one go:Then you'd just do:
Output:
最好的方法是:
或者
Best way to do it:
or
如果您
list.Sum()
因为您的列表数据不是1 和 0你可以这样做:
If You
list.Sum()
because your list data isn't 1s and 0syou can do something like this: