C# c计算总数

C# c计算总数,c#,C#,有人能告诉我求和是如何工作的吗?是LINQ的一部分的扩展方法 它遍历集合中的所有元素,并使用传入的获取每个项的值。它将它们相加并返回结果。假设频率是一个包含特定数字出现次数的字典,即key是数字,value是该数字的出现次数,这将遍历字典中的所有键值对,并为每个键值对计算key*value的乘积,然后将它们相加。sum方法本身是一个扩展方法,您可以传递一个lambda表达式,该表达式说明如何添加每个项。它使用sum-LINQ方法。发件人: 计算序列的和 通过以下方式获得的双值: 在每个 输入序列

有人能告诉我求和是如何工作的吗?

是LINQ的一部分的扩展方法

它遍历集合中的所有元素,并使用传入的获取每个项的值。它将它们相加并返回结果。

假设频率是一个包含特定数字出现次数的字典,即key是数字,value是该数字的出现次数,这将遍历字典中的所有键值对,并为每个键值对计算key*value的乘积,然后将它们相加。sum方法本身是一个扩展方法,您可以传递一个lambda表达式,该表达式说明如何添加每个项。

它使用sum-LINQ方法。发件人:

计算序列的和 通过以下方式获得的双值: 在每个 输入序列的元素


它实际上相当于frequencies.Selectvalue=>value.Key*value.value.Sum,它遍历列表/字典中的每个项目,并将字典键乘以它所表示的值。然后将所有这些计算值相加。

它使用lambda表达式-请参阅


lambda表达式表示给定的值,我将取值的键和值的值,并将它们相乘。求和函数可能会将该函数应用于频率的每个元素,并将每次计算的结果求和在一起,我在这里猜测,但没有足够的信息来说明。

请查看Jon Skeet的这篇博文,其中他重新实现了求和:


我猜频率是一个IEnumerable,所以Sum方法实际上是为IEnumerable中的每个元素调用一个方法,该方法是:

var deviation = frequencies.Sum(value => (value.Key * value.Value))

所以偏差是所有这些值的总和。这不是偏差

在您的案例中,Sum只是在集合中迭代一个keyvalue对

return value.Key * value.Value;
是的缩写

var deviation = frequencies.Sum(value => (value.Key * value.Value))

下面是我最简单的Sum方法实现

var sum = 0.0M; // or 0.0D; // or what ever type?
foreach(var pair in frequencies) {
    sum += (pair.Key * pair.Value);
}
它不检查任何异常,并且完全相信传入的参数值为true。此外,我想问社区十进制结果应该如何初始化。 你可以像Sum一样使用MySum方法,例如

public static class LinqExt 
    {
        public static decimal? MySum<TSource>(this IEnumerable<TSource> list, Func<TSource,decimal?> selector)
        {
            decimal? result = 0;
            foreach (var p in list) 
            {
                result += selector(p);
            }
            return result;
        }
    }

这将给出列表中所有整数的总和

Yes。文档可以告诉你。将来,请用谷歌搜索它,或者如果你不能理解谷歌的搜索结果,请粘贴更多的代码,这样我们就可以确定我们在看什么。一句话是不够的!顺便说一句,你应该接受更多的答案。。。
List<int> values = new List<int>{1,2,3,4};
var sum = values.MySum(x=>x);