Я новичОк и пытаюсь разобраться с задачей, есть CSV файл, в котором находятся данные
в одном столбце,
пример:
03.03.2020,100
04.03.2020,150
09.04.2020,130
10.04.2020,150
Примечание:
DateTime, Value
Нужно сгруппировать данные за 1 месяц (суммировать их значения) и получить среднее значение за месяц (к примеру в месяце 4-5 продаж, вот нужно сумму за месяц / на кол-во значений в том же месяце)
Результат:
03.2020,130
04.2020,140
Действие:
var result = lstTest
.Select(row => row.Split(','))
.GroupBy(row => DateTime.Parse(row[0]), row => int.Parse(row[1]), (date, val) => new { Date = date, Value = val }) //.Average()
.GroupBy(x => x.Date.Month, x => x.Value.Average());
Получаю ответ:
System.Linq.Lookup`2+Grouping[System.Int32,System.Double]
Старая версия кода:
spoiler
List lstTest = new List(); //перебрасываю значения во временный список
for(int i = 3; i < lst.Count; i++)
lstTest.Add(lst[i]);
var result =
from line in lstTest
let values = line.Split(',')
let date = values[0]
group values by date into g
orderby g.Key
select new
{
date_column = g.Key,
value_column = g.Sum(x => int.Parse(x[1]))
};
var result2 = result.Select(record => record.date_column + "," + record.value_column);
foreach(var r in result2)
Console.WriteLine(r);