2011-01-04 9 views
0

Angenommen, die folgende einfache Tabelle Design:LINQ to SQL, Aggregation von Unterabfrageergebnis

Tabelle Master (Id Bigint PK, Nachricht nvarchar (50))

Beispielreihe in Master
101 " foo“

Tabelle Detail (Id Bigint PK, MasterID Bigint FK zum Master PK, Code nvarchar (5))

Beispielzeilen im Detail
1001, 101, "A"
1002, 101, "B"
1003, 101, "C"

gewünschte Ausgabe von L2S Abfrage würde so etwas wie der folgenden-

Id, Code (s), Nachricht
seine 101, "A, B, C", "Foo"

Die folgende L2S-Abfrage gibt mir, was ich will, aber gibt es eine bessere Möglichkeit, es auszudrücken?

from m in Master 
    where m.Id == 101 
    select new 
    { 
     mi.Id, 
     Codes = string.Join(",", (from c in Detail 
            where c.MasterId == m.Id 
            select c.Code).ToArray()), 
     mi.Message 
    } 

Antwort

1

Purrrrfect. Ich würde dasselbe tun, außer die Methodensyntax zu verwenden. Scheint mir "natürlicher" zu sein.