LeftJoin in LINQ
Casablanca
- c#
- linq
0 dedlfix
Hallo Forum,
ich bräuchte wieder einmal eure Hilfe bei einem LINQ-Problem. Ich habe eine Anfrage, die mir 3-4 Liste (List<List<object>>) zurück gibt. Jede Liste beinhaltet mehrere anonymen Objekte, die u.a. über ein Datum- und ID-Feld verfügen. Die in einer Liste vorhandene Objekte haben dieselben IDs.
LISTE
LISTE
Liste1--->objeckt1--> 2005.01.01, ID=123
objeckt2--> 2005.01.02, ID=123
objeckt3--> 2005.01.04, ID=123
objeckt3--> 2005.01.05, ID=123
objeckt3--> 2005.01.07, ID=123
Liste2--->objeckt1--> 2005.01.02, ID=456
objeckt3--> 2005.01.03, ID=456
objeckt3--> 2005.01.08, ID=456
Liste3--->objeckt1--> 2005.01.04, ID=789
objeckt3--> 2005.01.05, ID=789
objeckt2--> 2005.01.06, ID=789
objeckt3--> 2005.01.09, ID=789
Nun zum Problem: Wie man sieht, sind die Listen unterschiedlich groß. Das liegt daran, weil Tage (Date) in jeder Liste unterschiedlich erfast sind. Während die erste Liste z.B. die Tage Montag, Dienstag, Mittwoch, Donnesrstag und Freitag beinhaltet, binhalten andere Liste andere Tage. Meine Aufgabe besteht nun darin, via Linq die Länge der Listen zu begleichen, indem ich für die nicht vorhandnen Tage in einer Liste ein Object mit den Gleichen Felder als NULL-Record einfüge. Das Ergebnis soll wie folgt aussehen:
LISTE
Liste1--->objeckt1--> 2005.01.01, ID=123,
objeckt2--> 2005.01.02, ID=456,
objeckt3--> 2005.01.03, ID=456, NULL
objeckt4--> 2005.01.04, ID=123,
objeckt5--> 2005.01.05, ID=123,
objeckt6--> 2005.01.06, ID=456, NULL
objeckt7--> 2005.01.07, ID=123,
objeckt8--> 2005.01.08, ID=456, NULL
objeckt9--> 2005.01.09, ID=456, NULL
Liste2--->objeckt1--> 2005.01.01, ID=456, NULL
objeckt2--> 2005.01.02, ID=456
objeckt3--> 2005.01.03, ID=456
objeckt4--> 2005.01.04, ID=456, NULL
objeckt5--> 2005.01.05, ID=456, NULL
objeckt6--> 2005.01.06, ID=456, NULL
objeckt7--> 2005.01.07, ID=456, NULL
objeckt8--> 2005.01.08, ID=456
objeckt9--> 2005.01.09, ID=456, NULL
Liste3--->objeckt1--> 2005.01.01, ID=789, NULL
objeckt2--> 2005.01.02, ID=789, NULL
objeckt3--> 2005.01.03, ID=789, NULL
objeckt4--> 2005.01.04, ID=789
objeckt5--> 2005.01.05, ID=789
objeckt6--> 2005.01.06, ID=789
objeckt7--> 2005.01.07, ID=789, NULL
objeckt8--> 2005.01.08, ID=789, NULL
objeckt9--> 2005.01.09, ID=789
Das sieht wie ein leftjoin aus. Aber wie Kann man mit LINQ so etwas hinbekommen? Ich kann auch alles als eine lange Liste zurückbekommen, in der alle Datensätze vorhanden sind
Danke im Voraus
Tach!
Das sieht wie ein leftjoin aus. Aber wie Kann man mit LINQ so etwas hinbekommen?
LINQ kennt auch Joins, sogar Left Outer Joins.
dedlfix.