Dynamic Linq funkcje agregacji

0

Witam.
Mam następujący problem. Korzystam z biblioteki dynamic linq to sql, jest to wymuszone poprzez konstrukcje szerszego zagadnienia związanego z moim problemem. Niestety wszelkie FAQ i manuale co do tej biblioteki są dość ograniczone. Google niestety też milczy a mój problem wygląda następująco

var Lista=(jakieś_tam_zapytanie_w_xpatch_z_grupowaniem).Select("new (Key.GRUPA_1, Key.GRUPA_2, Where(ROK==2008 && MIESIAC==01).Sum(Wartosc) as M200901)"); ```

Wykorzystanie tej biblioteki jest uwarunkowane tym, że takich kolumn jak M200901 będzie więcej (dokładnie tyle ile miesięcy jest między datami podanymi w filtrze przez użytkownika). Wszystko byłoby pięknie ładnie gdyby nie fakt, że Sum jest typu decimal, a są przypadki w ktorych w tej kolumnie zwracany jest null co z kolei owocuje błędem. W normalnym trybie postawienie przed caloscia (decimal?) zalatwiloby sprawe... jednak nie moge sie doszukac co zrobic w przypadku dynamicznych zapytan.

Jeśli ktoś zetknal sie z podobnym problemem bardzo prosze o chociaz naprowadzenie na trop.

0

Ok. Dogrzebałem się do manuali MS i znalazlem rozwiazanie. Gdyby ktos kiedys potrzebowal to wyglada to tak:

var Lista=(jakieś_tam_zapytanie_w_xpatch_z_grupowaniem).Select("new (Key.GRUPA_1, Key.GRUPA_2, Decimal?(Where(ROK==2008 && MIESIAC==01).Sum(Wartosc)) as M200901)");

0

A wywoływanie generycznej wersji Select z podaniem typu zwracanego nie rozwiązuje sprawy?

0

"Generyczna wersja selecta" - nie wiem co kolega mial na myśli.
Jak już wspomnialem znalazlem rozwiazanie. Dodanie przed agregacja "Decimal?" rozwiazalo problem.

0

.Select<TSource, TResult>(cośtam)

Myślałem, że to właśnie od tego jest, a nie mam jak teraz sprawdzić :)

0

Wszystko fajnie, tylko jak juz wspomnialem sam nie wiem ile bedzie tych kolumn w ktorych trzeba robic agregacje. Przyklad jaki napisalem to maksymalnie uproszczona wersja. Kolumn z agregacja moze byc jedna, moze byc 10, moze byc 100, wszystko zalezy od tego jakie filtry poda uzytkownik w trakcie przegladania strony. Nie jestem pewien czy w ten sposób da się określić typ niewiadomej liczby kolumn.

Rozwiązanie jakie podałem znajduje się w Samplach do C# (ale oczywiście tak napisane, że dopiero za 3 razem zrozumiałem jak to zrobić).

1 użytkowników online, w tym zalogowanych: 0, gości: 1