C# 使用Linq计算C中的评级平均值#

C# 使用Linq计算C中的评级平均值#,c#,linq,C#,Linq,我有一个数组评级,其中评级[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; for(int i=1;iratings.Sum()/ratings.Count(

我有一个数组评级,其中评级[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;
for(int i=1;i
ratings.Sum()/ratings.Count()
应该可以工作。如果不行,你需要比“不做我想做的事”更详细

如果所有其他方法都失败,请尝试:

ratings.Average();
ratings.Sum()/ratings.Count()
应该有效。如果无效,你需要比“不做我想做的事”更详细

如果所有其他方法都失败,请尝试:

ratings.Average();

有几种方法可以做到这一点,例如使用
Select
将每个评级的指数包含在计算中:

var average = ratings.Select((r, n) => r * n).Sum() / ratings.Sum();

如果评级本身是整数,则需要将上面的一侧强制转换为双精度,这样就不会对结果进行整数除法。

有几种方法可以做到这一点,例如使用
选择
将每个评级的索引包含在计算中:

var average = ratings.Select((r, n) => r * n).Sum() / ratings.Sum();

如果评分本身是整数,你需要将上面的一侧转换为double,这样就不会对结果进行整数除法。

只需保留项目的运行总数和运行计数。对于列表中的每个项目,将其添加到总计数中,并根据该值的计数乘以e价值本身:

int sum = 0;
int count = 0;
for(int i = 0; i < array.Length; i++)
{
    sum += array[i] * i;
    count += array[i];
}
double average = sum / (double)count;

只需保留项目的运行总数和运行计数。对于列表中的每个项目,将其添加到总计数中,并根据该值的计数乘以该值本身,将其添加到运行总数中:

int sum = 0;
int count = 0;
for(int i = 0; i < array.Length; i++)
{
    sum += array[i] * i;
    count += array[i];
}
double average = sum / (double)count;

正是我想要的。谢谢!正是我想要的。谢谢!