2017-11-15 1 views
0

Ich bekomme Domain-bezogene Informationen als eine einfache Liste aus der Datenbank und jetzt muss ich die Informationen gruppieren, bevor Sie an die Ansicht binden. Hier sind meine Klassendetails. Ich habe versucht, Logik verschiedene Gruppe konnte aber nicht das ErgebnisC# list Gruppe Von

public class CapabilitySelectionModel 
    { 
     public string Domain { get; set; } 
     public string Category { get; set; } 
     public string Capability { get; set; } 
    } 

List<CapabilitySelectionModel> list1 = new List<CapabilitySelectionModel>(); 
      list1.Add(new CapabilitySelectionModel { Domain = "Domain1", Category = "Category1", Capability = "Capability1" }); 
      list1.Add(new CapabilitySelectionModel { Domain = "Domain1", Category = "Category1", Capability = "Capability2" }); 
      list1.Add(new CapabilitySelectionModel { Domain = "Domain1", Category = "Category2", Capability = "Capability1" }); 
      list1.Add(new CapabilitySelectionModel { Domain = "Domain2", Category = "Category1", Capability = "Capability1" }); 
      list1.Add(new CapabilitySelectionModel { Domain = "Domain2", Category = "Category2", Capability = "Capability1" }); 
      list1.Add(new CapabilitySelectionModel { Domain = "Domain2", Category = "Category2", Capability = "Capability2" }); 

Es wird etwas so aussehen Jetzt

Domain1 
    Category1 
     Capability1 
     Capability2 
    Category2 
     Capability1 
Domain2 
    Category1 
    Capability1 
    Category2 
    Capability1 
    Capability2 

erhalten erreichen, ich will diese Liste an die unten Listenformat

public class DomainModel 
    { 
     public string DomainName { get; set; } 
     public List<CategoryModel> CategoryModel { get; set; } 
    } 

public class CategoryModel 
    { 
     public string CategoryName { get; set; } 
     public List<CapablityModel> CapablityModel { get; set;} 
    } 

public class CapablityModel 
    { 
     public string CapablityName { get; set; } 
    } 
umgewandelt werden

Kann jemand beraten?

Antwort

1

Nicht getestet, aber Sie müssen nur einige verschachtelte Gruppierung:

var results = list1 
    .GroupBy(a => a.Domain) 
    .Select(g => new DomainModel {   
      DomainName = g.Key, 
      CategoryModel = g.GroubY(b => b.Category) 
       .Select(h => new CategoryModel { 
       CategoryName = h.Key, 
       CapablityModel = h.Select(c => new CapablityModel { 
        c.CapablityName }).ToList() 
      }).ToList() 
    }).ToList(); 
+0

Vielen Dank für Ihre schnelle Antwort. Es hat funktioniert und ich habe gerade die letzte Zeile geändert. CapabilityModel {CapablityName = c.Capability} –