using System; using System.Collections.Generic; using System.Linq; public class Test { public static void Main(string[] args) { Combo combo = CarregarCombo(); foreach (var grupo in combo.Grupos.OrderBy(g => g.Key)) { Console.WriteLine(grupo.Text); foreach (var item in grupo.Itens.OrderBy(c => c.Value)) { Console.WriteLine(" " + item.Text); } } Console.ReadKey(); } private static Combo CarregarCombo() { Grupo grupo1 = new Grupo(); grupo1.Text = "Grupo um"; grupo1.Key = "1"; grupo1.Itens = new List(); Item item1 = new Item(); item1.Text = "Item1"; item1.Value = "1"; grupo1.Itens.Add(item1); Item item3 = new Item(); item3.Text = "Item3"; item3.Value = "3"; grupo1.Itens.Add(item3); Item item2 = new Item(); item2.Text = "Item2"; item2.Value = "2"; grupo1.Itens.Add(item2); Grupo grupo2 = new Grupo(); grupo2.Text = "Grupo dois"; grupo1.Key = "2"; grupo2.Itens = new List(); Item item6 = new Item(); item6.Text = "Item6"; item6.Value = "6"; grupo2.Itens.Add(item6); Item item4 = new Item(); item4.Text = "Item4"; item4.Value = "4"; grupo2.Itens.Add(item4); Item item5 = new Item(); item5.Text = "Item5"; item5.Value = "5"; grupo2.Itens.Add(item5); Combo combo = new Combo(); combo.Grupos = new List(); combo.Grupos.Add(grupo1); combo.Grupos.Add(grupo2); return combo; } } public class Combo { public List Grupos { get; set; } } public class Grupo { public string Text { get; set; } public string Key { get; set; } public List Itens { get; set; } } public class Item { public string Text { get; set; } public string Value { get; set; } public bool Selected { get; set; } }