2011-02-06 2 views
1

У меня есть три классаКак сделать категории, подкатегории, подкатегории с помощью mvc?

public class CountryListViewModel 
{ 
    public IEnumerable<CountryViewModel> 
    Countries { get; set; } 
} 

public class CountryViewModel 
{ 
    public string CountryName { get; set; } 
    public string State { get; set; } 
    public IEnumerable<CityViewModel> Cities { get; set; } 
} 

public class CityViewModel 
{ 
    public string CityName { get; set; } 
    public string CityLink { get; set; } 
} 

с помощью LINQ к сущности группировки по стране, и она работает, как задумано. , но мне также нужно группировать по штату. Не могли бы вы помочь мне изменить свой запрос для группировки сначала по странам, а не по штату?

var query = from c in _db.MyTable 
         where c.IsActive && c.Country == country 
         group c by c.Country 
          into loc 
          select new CountryViewModel() 
          { 
           CountryName = loc.Key, 
           Cities = loc.Select(s => new CityViewModel() { CityName = s.City, CityLink = s.City }).Distinct() 
          }; 

ответ

0
var q = from i in query 
     group i by i.state into st 
     select new with { .State = st.Key, 
          .Countries = (from c in st group c by c.Country into ctr 
             select new with {.Country = ctr.Key, 
             .Cities = ctr}) 

Нет Идея, если это работает, только что ввели его здесь без тестирования или глядя на ваш DataModel.

+0

ее не работает – Malish

+0

и что не работает, вы должны быть более конкретным, я не могу видеть, что говорит ваш отладчик? – Luke

+0

объект не установлен в экземпляр объекта – Malish

1

Я нашел решение по себе

var query = from c in _db.MyTable 
      where c.IsActive && c.Country == country 
      group c by new{ c.Country, c.State} 
      into loc 
        select new CountryViewModel() 
           { 
            CountryName = loc.Key.Country, 
    State = loc.Key.State, 
            Cities = loc.Select(s => new CityViewModel() { CityName = s.City, CityLink = s.City }).Distinct() 
           }; 
+0

круто, поздравляю, так что если вы спросите, я хочу группироваться по штату и стране, я бы сказал то же самое, но вы говорили о категориях, подкатегориях и подкатегориях. Поэтому ваше решение не соответствует вашим требованиям, я просто ответил, что вы просите в названии, иерархическом решении. Но я рад, что вы нашли то, что искали там! – Luke

+0

«используя linq для группировки сущностей по стране, и он работает как разработанный, но я также должен группироваться по штату». в следующий раз просто прочитал вопрос – Malish

Смежные вопросы