Liste der EF-Objekte Dictionary von Listen mit linq
Ich umwandeln möchte eine Liste von EF-Objekte zu einem Wörterbuch. Ich habe etwas vollbracht, mit einem Nachteil: ich kann nicht herausfinden, wie Sie mehrere Objekte zu einer key,value
pair basierend auf einem Attribut des Objekts.
Zum Beispiel sagen, ich habe ein Entity Framework object TblValue
mit drei-Werte - ValueID, ValueNm, CodeID
.
Den CodeID
freigegeben werden die Objekte - einige können die gleichen sein, und einige können unterschiedlich sein.
Ich würde gern ein Dictionary<TblCode, List<TblData>>
. (TblCode
kommt aus CodeID
.) Im Grunde möchte ich, um ein Wörterbuch zu erstellen, diese Liste von Elementen, bei denen jede Liste getrennt & gruppiert nach der CodeID
mit LINQ.
Die LINQ-Anweisung, die ich zuvor tätig war, aber wäre es nicht eine Gruppierung. Ist das nicht ziemlich nahe, oder ist LINQ nicht angemessen für diese? Würde ein foreach
loop besser?
var splitTimes = times.Cast<TblValue>().ToDictionary(o => tr.GetCode(o.CodeID));
Klärung - ich bin nicht in der Lage, um die Gruppierung der Werte....Ich kann nicht erstellen Sie eine Dictionary<TblCode, List<TblValue>>
ich kann nur eine Dictionary<TblCode, TblValue>
- Sieht aus wie ein XY-Problem.meta.stackexchange.com/questions/66377/what-is-the-xy-problem Sie präsentieren eine Lösung für ein problem, aber was ist das zugrunde liegende problem, das Sie lösen möchten?
- bearbeitet für die Klarstellung...hilft das?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Müssen Sie zunächst eine Gruppe und dann konvertieren Wörterbuch. So:
Wenn Sie brauchen, konvertieren Sie es tun, entweder
GroupBy()
oderToDictionary()
Fand ich einen Weg, es zu tun, the_joric die Antwort war knapp, aber ich hatte explizit zu nennen
ToList()
auf die Werte.var splitTimes = times.GroupBy(x => x.ProjCdId).ToDictionary(o => tr.GetProjCd(o.Key), o => o.ToList());