我有一个数组等级,其中等级[i] = j表示i的等级为j,其中i在1到10之间。如何使用linq计算平均等级?
for (int i = 1; i <= 10;i++)
{
sum += i * ratings[i];
nr += ratings[i];
}
ratingAvg = sum / nr;
如果我使用
ratings.Sum() / ratings.Count()
,它不会执行我想要的操作。我需要做类似ratings.Sum(w => index_of_w_in_the_array * w.value).
的事情 最佳答案
有几种方法可以执行此操作,例如,使用Select
将每个等级的索引包括在计算中:
var average = ratings.Select((r, n) => r * n).Sum() / ratings.Sum();
如果评级本身是整数,则需要将上述内容的一侧强制转换为
double
,以免对结果进行整数除法。关于c# - 使用Linq计算C#中的平均评分,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20977541/