Я хочу выбрать данные из таблицы данных. В настоящее время я использую анонимный список. Данные могут выглядеть следующим образом:
ID AMOUNT INVOICE_DATE
1 9,5 06.03.2020
2 12,4 06.03.2020
1 12,5 07.03.2020
2 14,3 07.03.2020
3 15 07.03.2020
2 17 08.03.2020
3 19,2 08.03.2020
3 12 08.03.2020
И способ, которым я должен сделать запрос, выглядит следующим образом:
ID AMOUNT TOTAL_AMOUNT_SOLD INVOICE_DATE
1 12,5 23 07.03.2020
2 14,3 26,7 07.03.2020
3 15 15 07.03.2020
2 17 43,7 08.03.2020
3 31,2 46.2 08.03.2020
Это мой код прямо сейчас:
var soldInDT = dt.AsEnumerable()
.GroupBy(x => x.Field<int>("ID"))
.Select(grp => new
{
ID = grp.FirstOrDefault().Field<int>("ID"),
AMOUNT = grp.Where(x => x.Field<int>("ID") == grp.Key).Sum(x => x.Field<double>("AMOUNT")),
TOTAL_AMOUNT_SOLD = grp.Where(x => x.Field<int>("ID") == grp.Key && x.Field<DateTime>("INVOICE_DATE") < startDate).Sum(x => x.Field<double>("AMOUNT")),
DATE = grp.FirstOrDefault().Field<DateTime>("INVOICE_DATE")
}).ToList();
И есть ли более быстрый способ сделать это, чем с помощью лямбда-выражений и тех, списки?