2010-05-20 2 views
2

Я использую следующий классСписок группы и Подгруппа

class Country 
{ 
    int CtryID {get; set;} 
    List<City> city {get; set;} 
} 

class City 
{ 
    string county {get; set;}  
    int sqkm {get; set;} 
} 

CtryID имеет значение, как 1,2,3 и округ имеет значение, как «County 1», «Каунтите 2» и так далее

Я хочу, чтобы результат, как этот

1 
    County 1 
    County 6 
    County 3 
2 
    County 9 
    County 4 
    County 2 

Как я могу добиться этого с помощью запроса лямбда?

Это то, что я использовал. Список называется lišta

var lst = from aa in ListA 
        from cny in aa.ctryid 
        select new 
        { 
         CountryID= aa.CtryID, 
         CountyName= cny.County 
        }; 

Запрос 2: Кроме того, в моем втором запросе (отдельно от первого) Я хочу OrderBy Страну, а затем каждый город внутри страны, без повторения в несколько раз Страновые для каждого Город?

+0

? Это был ожидаемый результат. Я спрашиваю, как достичь этого, используя запрос LINQ – Gokul

+0

. Я объясню: если у вас есть «Список » - каждая страна имеет «Список ». Если вы перебираете страны и печатаете их по одному, вы получаете нужный результат. Вам не нужен запрос или для управления данными - вы уже храните данные так, как хотите. – Kobi

+0

К сожалению, это не то, что я получаю. Когда я печатаю, CtryID печатается для каждого округа .. это не то, что нужно, как ясное в моем ожидаемом выходе – Gokul

ответ

0
var countryGroups = (from aa in ListA 
        from cny in aa.ctryid 
        select new 
        { 
         CountryID= aa.CtryID, 
         CountyName= cny.County 
        }).GroupBy(n => n.CountryID); 

Это будет группировать ваши результаты по CountryID, но выход не будет списка - это будет группировка.

Чтобы вывести, выполните итерацию по countryGroups, и в каждом из них перейдите по объектам CountyName.

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