我有一个数组等级,其中等级[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/

10-13 06:52