Как рассчитать среднее значение элемента в массиве (зарплата) в C# - PullRequest
0 голосов
/ 29 мая 2020

что еще мне нужно добавить или изменить, чтобы отображать моих сотрудников в возрасте от 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();

Ответы [ 2 ]

1 голос
/ 29 мая 2020

Я думаю, вам нужно прочитать все данные и вычислить avgSalary перед фильтрацией:

Сопоставьте свои данные в классе Employee с параметрами Name, Function, Age, Salary, Studies.

    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.

0 голосов
/ 29 мая 2020

лучший способ: сначала прочтите все и добавьте в список, затем выполните другие операции со списком

вот это образец!

sing System;
using System.Collections.Generic;
using System.Linq;

namespace ConsoleApp2
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Hello World!");

            List<Employee> employees = new List<Employee>();

            for (int i = 0; i < 10; i++)
            {
                employees.Add(new Employee
                {
                    Name ="name "+i,
                    Function = "fun "+i,
                    Age =i+24,
                    Salary =100+i,
                    Studies ="stu"+i
                });
            }



            //here can do any opr on list
            double avg =employees.Average(s => s.Salary);
            var result = employees.Where(x => x.Age > 25 && x.Age < 35 && x.Salary> avg).ToList();

            foreach (var item in result)
            {
                Console.WriteLine("item name:" + item.Name);

            }

            Console.WriteLine("avg :" + avg);
            Console.ReadKey();
        }


        public class Employee
        {
            public string Name { set; get; }
            public string Function { set; get; }
            public int Salary { set; get; }
            public int Age { set; get; }
            public string Studies { set; get; }

        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...