Сортировка и группировка по первому столбцу И сумма каждого значения второго и третьего столбца - C#

Узнай цену своей работы

Формулировка задачи:

Здравствуйте, нужна помощь в реализации. Есть файл формата:
231,9;3;1
231,9;0;1
232,1;1;0
232,0;1;6
232,1;5;0
232,1;3;5
232,1;2;1
232,2;0;6
232,2;1;5
задача получить новый файл формата:
231,9;3;2
232;1;6
232,1;11;6
232,2;1;11
т.е. сортировка и группировка по первому столбцу И сумма каждого значения второго и третьего столбца в файле может быть от 1 до 10000 строк

Решение задачи: «Сортировка и группировка по первому столбцу И сумма каждого значения второго и третьего столбца»

textual
Листинг программы
class Program
    {
        private const string In = @"d:\in.txt";
        private const string Out = @"d:\out.txt";
        static void Main()
        {
 
           if (!File.Exists(In))
            {
                Console.WriteLine("Не найден входной файл");
                return;
            }
 
            var all = File.ReadAllLines(In);
            if (!all.Any())
            {
                Console.WriteLine("Пустой файл");
                return;
            }
            var list = new List<DataIn>();
            foreach (var split in all.Select(s => s.Split(';')))
            {
                if (split.Count() < 3)
                {
                    Console.WriteLine("Неверный формат");
                    continue;
                }
                double numb;
                int first;
                int second;
                if (!double.TryParse(split[0], out numb))
                {
                    Console.WriteLine("Неверный первый аргумент");
                    continue;
                }
 
                if (!int.TryParse(split[1], out first))
                {
                    Console.WriteLine("Неверный второй аргумент");
                    continue;
                }
                if (!int.TryParse(split[2], out second))
                {
                    Console.WriteLine("Неверный третий аргумент");
                    continue;
                }
                list.Add(new DataIn { Number = numb, FirstCol = first, SecondCol = second });
            }
 
            var listOut = (from grp in list.GroupBy(x => x.Number).OrderBy(x => x.Key) let sumFirst = list.Where(x => x.Number.Equals(grp.First().Number)).Sum(x => x.FirstCol) let sumSecond = list.Where(x => x.Number.Equals(grp.First().Number)).Sum(x => x.SecondCol) select string.Format("{0};{1};{2}", grp.First().Number, sumFirst, sumSecond)).ToList();
 
            Console.WriteLine("Выход:");
            foreach (var outItem in listOut)
            {
                Console.WriteLine(outItem);
            }
            Console.WriteLine("Запишем в файл");
            try
            {
                using (var file = new StreamWriter(Out))
                {
                    foreach (var line in listOut)
                        file.WriteLine(line);
                }
            }
            catch (Exception ex)
            {
                Console.ForegroundColor = ConsoleColor.Red;
                Console.WriteLine(ex.Message);
                Console.ResetColor();
                throw;
            }
        }
 
    }
 
    class DataIn
    {
        public double Number { get; set; }
        public int FirstCol { get; set; }
        public int SecondCol { get; set; }
    }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 3.6 из 5
Похожие ответы