Deutsch
Germany.ruФорумы → Архив Досок→ Программирование

Эквивалент Access​ SQL Transform используя LINQ.

11.10.19 11:27
Re: Эквивалент Access​ SQL Transform используя LINQ.
 
Murr патриот
Murr
в ответ Murr 29.09.19 11:45

Просмотрел предложенные варианты и опробовал их в работе...

Жуть... В смысле - не работает.


Опирался на вот это решение:

https://stackoverflow.com/questions/963491/pivot-data-using-linq


Имел следующие данные:

object[] Order_120074721_Glass = {
new object[] { 1, 120074721, 1, 3085, "4 IP ADV 1.0 HST", 4, 2.8733, 20.7329, 2.8733 },
new object[] { 1, 120074721, 1, 5104, "4 CLEAR G HST", 4, 2.8733, 20.7329, 2.8733 },
new object[] { 2, 120074721, 1, 6005, "4-CLR G", 4, 2.8733, 20.7329, 2.8733 },
new object[] { 3, 120074721, 1, 3085, "4 IP ADV 1.0 HST", 4, 2.8733, 20.7329, 2.8733 },
new object[] { 3, 120074721, 1, 5104, "4 CLEAR G HST", 4, 2.8733, 20.7329, 2.8733 },
new object[] { 1, 120074721, 2, 3085, "4 IP ADV 1.0 HST", 1, 0.5345, 10.3446, 0.5345 },
new object[] { 1, 120074721, 2, 5104, "4 CLEAR G HST", 1, 0.5345, 10.3446, 0.5345 },
new object[] { 2, 120074721, 2, 6005, "4-CLR G", 1, 0.5345, 10.3446, 0.5345 },
new object[] { 3, 120074721, 2, 3085, "4 IP ADV 1.0 HST", 1, 0.5345, 10.3446, 0.5345 },
new object[] { 3, 120074721, 2, 5104, "4 CLEAR G HST", 1, 0.5345, 10.3446, 0.5345 }
};

object[] Order_120074722_Glass = {
new object[] { 1, 120074722, 1, 3087, "6 IP TOP 1.1 HST", 4, 2.8733, 30.7329, 2.8733 },
new object[] { 1, 120074722, 1, 5105, "6 CLEAR G HST", 4, 2.8733, 30.7329, 2.8733 },
new object[] { 2, 120074722, 1, 6006, "6-CLR G", 4, 2.8733, 30.7329, 2.8733 },
new object[] { 3, 120074722, 1, 3086, "6 IP ADV 1.0 HST", 4, 2.8733, 30.7329, 2.8733 },
new object[] { 3, 120074722, 1, 5105, "6 CLEAR G HST", 4, 2.8733, 30.7329, 2.8733 },
new object[] { 1, 120074722, 2, 3087, "6 IP TOP 1.1 HST", 1, 0.5345, 40.3446, 0.5345 },
new object[] { 1, 120074722, 2, 5105, "6 CLEAR G HST", 1, 0.5345, 40.3446, 0.5345 },
new object[] { 2, 120074722, 2, 6006, "4-CLR G", 1, 0.5345, 40.3446, 0.5345 },
new object[] { 3, 120074722, 2, 3086, "6 IP ADV 1.0 HST", 1, 0.5345, 40.3446, 0.5345 },
new object[] { 3, 120074722, 2, 5105, "6 CLEAR G HST", 1, 0.5345, 40.3446, 0.5345 }
};

Данные суммируются по "хитрым" правилам - 5-я - одна максимальная из группировки по 3 и 4 и , остальные - просто суммируются.

Затем колонки 0, 2 и 3 - дропаются.

Остается - длинный номер, строка и кучка остального мусора. Комбинация - длинный номер + строка - уникальны.

Эта часть - работает.


Дальше мне нужно получить довольно несложную вещь - словарик - ключ - длинный номер, значение - массив/список всех строк с этим значением.

Вроде как должен работать код приводимый под указанным выше ликом, но... набираются лишние строки.

Получается так:


Где покрутить чтобы пустые списки убрались?

 

Перейти на