首页 > 解决方案 > 如何在C#中计算数组(工资)中元素的平均值

问题描述

我还需要添加或更改什么来显示我的员工年龄在 25 到 35 岁之间,他们的工资高于平均工资。此程序仅显示 25 至 35 岁的员工。

        for (int i = 0; i < employeename; i++)
         {
            while (br.PeekChar() != -1)
            {
                function[i].Name= br.ReadString();
                function[i].Function= br.ReadString();
                function[i].Age= br.ReadInt32();
                function[i].salary= br.ReadInt32();
                function[i].Studies= br.ReadString();

                if ((function[i].Age>25) && (function[i].Age<35))
                {
                    string str = String.Format("|{0,-21}|{1,-9}|{2,-7}|{3,-16}|{4,-12}|", function[i].Name, function[i].Function,
                        function[i].Age.ToString(), function[i].Salary.ToString(), function[i].Studies);
                    Console.WriteLine(str);
                }

            }

        }
        Console.ReadKey();
        br.Close();

标签: c#

解决方案


我认为您需要在过滤之前读取所有数据并计算 avgSalary:

使用参数 Name、Function、Age、Salary、Study 将您的数据映射到 Employee 类中。

    var employees = new List<Employee>();
    while (br.PeekChar() != -1)
    {
        var employee = new Employee() {
           Name= br.ReadString(),
           Function= br.ReadString(),
           Age= br.ReadInt32(),
           Salary= br.ReadInt32(),
           Studies= br.ReadString()
         };
         employees.Add(employee);
     }

var avgSalary = employees.Select(x => x.Salary).Average();

var finalList = employees.Where(x => x.Age > 25 && x.Age < 35 && x.Salary > avgSalary).ToList();

您需要为此使用 EF 和 LINQ。


推荐阅读