2012-11-07 42 views
0

這裏是我的課:LINQ查詢到集團母公司和各子rentities

class Country 
{ 
    public Country() 
    { 
     States = new List<State>(); 
    } 

    public int Id { get; set; } 
    public int Name { get; set; } 

    public virtual ICollection<State> States { get; set; } 
} 

class State 
{ 
    public State() 
    { 
     Counties = new List<County>(); 
    } 

    public int Id { get; set; } 
    public int Name { get; set; } 
    public int CountryID { get; set; } 

    [ForeignKey("CountryID")] 
    public virtual Country Country { get; set; } 

    public virtual ICollection<County> Counties { get; set; } 
} 

class County 
{ 
    public County() 
    { 
     Cities = new List<City>(); 
    } 

    public int Id { get; set; } 
    public int Name { get; set; } 
    public int StateID { get; set; } 

    [ForeignKey("StateID")] 
    public virtual State State { get; set; } 

    public virtual ICollection<City> Cities { get; set; } 
} 

class City 
{ 
    public int Id { get; set; } 
    public int Name { get; set; } 
    public int CountyID { get; set; } 

    [ForeignKey("CountyID")] 
    public virtual County County { get; set; } 
} 

我有創造,這將使我的每個實體的所有記錄上述由國家,當時的國家分組查詢困難,然後縣,然後城市

我最終試圖把這個到backbone.js treeview。

什麼是正確的Linq查詢在各自小組收集記錄數據

+2

你想怎麼組記錄?我期待的是一個包含國家,州,縣和城市的客戶記錄,以便您可以按國家,州,縣,城市對客戶進行分組。 – Kristof

回答

2
public List<Country> GetCountryHeiracrchy() 
    { 
     var countries = DbContext.GetAll(); 
     var lstCountries = new List<Country>(); 

     foreach (var _country in countries) 
     { 
      var country = new Country { Name = _country.Name }; 

      foreach (var _state in _country.States) 
      { 
       var state = new State() {Name = _state.Name}; 

       foreach(var _county in _state.Counties) 
       { 
        var county = new County {Name = _county.Name}; 
        foreach(var _city in _county.Cities) 
        { 
         var city = new City {Name = _city.Name}; 
         county.Cities.Add(city); 
        } 
        state.Counties.Add(county); 
       } 
       country.States.Add(state); 
      } 
      lstCountries.Add(country); 
     } 
     return lstCountries; 
    }