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