2017-11-15 19 views
0

データベースからの単純なリストとしてドメイン関連の情報を取得していますが、ビューにバインドする前に情報をグループ化する必要があります。ここに私のクラスの詳細があります。私は私がこのリストには、以下のリスト形式c#listグループBy

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; } 
    } 
に変換したい、様々なグループロジック試みたが、それは今、この

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

のようになります。その結果に

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" }); 

を達成し得ることができませんでした

誰かに助言できますか?

答えて

1

テストされていますが、単にいくつかのネストされたグループは必要ありませ:あなたの迅速な対応のための

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

おかげで多くのことを。それは働いて、私はちょうど最後の行を変更しました新しいCapablityModel {CapablityName = c.Capability} –