2016-03-24 4 views
0

Diese Frage beruht aufHinzufügen einer dritten Klasse, in der zwei Klassen Subitems für Linq-Abfrage sind Anzeigen, um am Ende zu json

Data in Linq query not in join is not in output to json only those that are related in 2 classes are showing up

, in dem diese Antwort

aber fein funktionierten, ich bin eine 3. Klasse hinzufügen, die ich in die ‚Elemente‘ gruppieren möchten

var query = 
from d in reportData 
join r in reportDefinition on d.ReportGroupId equals r.ReportGroupId into items 
select new 
{ 
    d.ReportGroupName, 
    items = items.ToList(), 
    d.ReportGroupId 
}; 

New dotnetfiddle https://dotnetfiddle.net/IIBFKG aktualisiert

Wie kann ich die CustomReportDefinition-Klasse hinzufügen, um in den Elementen oder ReportData angezeigt zu werden?

+0

Lassen Sie mich sehen, ob ich die Frage verstehe. Anstatt dass die Elemente 'List 'sein? d.h. Umwandlung von 'ReportDefinition' in' CustomReportDefinition'? –

+0

Oder möchten Sie einen anderen Join und so etwas wie 'new {..., items = items.ToList(), customItems = ...}'? –

+0

@IvanStoev Sorry für die Verzögerung bei der Reaktion, hatte ein Treffen zu gehen. JA der 2. Kommentar, ein weiterer Beitrag –

Antwort

0

Eigentlich können Sie so viele ähnliche Klassen hinzufügen, wie Sie genau das gleiche Muster mit Wunsch:

var query = from d in reportData 
      join r in reportDefinition on d.ReportGroupId equals r.ReportGroupId into items 
      join cr in customReportDefinition on d.ReportGroupId equals cr.ReportGroupId into customItems 
      select new 
      { 
       d.ReportGroupName, 
       items = items.ToList(), 
       customItems = customItems.ToList(), 
       d.ReportGroupId 
      }; 

UPDATE: Base auf Ihre Kommentare, sieht aus wie Sie items und customItems konsolidieren möchten. Sehen Sie, wenn das Folgende für Sie funktioniert:

var query = from d in reportData 
      join r in reportDefinition on d.ReportGroupId equals r.ReportGroupId into items 
      join cr in customReportDefinition on d.ReportGroupId equals cr.ReportGroupId into customItems 
      select new 
      { 
       d.ReportGroupName, 
       items = items.Select(r => new 
       { 
        r.Id, r.ReportGroupNameDef, r.SortOrder, r.ReportGroupId, r.Type 
       }).Concat(customItems.Select(cr => new 
       { 
        cr.Id, cr.ReportGroupNameDef, cr.SortOrder, cr.ReportGroupId, cr.Type 
       })).ToList(), 
       d.ReportGroupId 
      }; 
+0

Ok, also muss ich NUR "Items" haben, weil die Enddaten als JSON zu einem Kendo TreeView exportiert werden und es erwartet, dass alle Kinder in den Items definiert werden –

+0

Ich verstehe deinen letzten Kommentar nicht. Was sagst du, was ich will? –

+0

Ah, also was sollte es sein? Wir können die Ergebnisse verketten, benötigen aber einen gemeinsamen Typ. Oder verwenden Sie einen der vorhandenen Typen (zum Beispiel 'ReportDefinition') und konvertieren Sie den anderen - sie scheinen ein und dieselben Felder zu haben. –

Verwandte Themen