2013-12-10 1 views
1

У меня есть следующие структуры в C#:списка Сортировать по недвижимости в вложенном списке

public class Circus { 
    int Id; 
    public List<Performers> Performers = new List<Performers>(); 
} 

public class Performer { 
    int Id; 
    public List<Talents> Talents = new List<Talents>(); 
} 

public class Talent { 
    public int Id; 
    public string Name; 
    public int skill; 
} 

Как бы я заказываю Участник по навыку (где Talent.Id == 1)? То есть мне нужно заказать список по свойству его дочернего списка. Я пробовал различные попытки и поиски, но пока ничего не заказал список. Спасибо заранее за любую помощь.

+1

Показать один из ваших попыток, которые не работают. Лучше показать сломанный код, а не код. –

+0

Также ... как должно выглядеть поведение сортировки, если таланты являются нулевыми, пустыми или не содержат талантов с идентификатором 1? –

+0

@ Эрик J: извините. Я набирал/удалял код за прошлый час. Я мог бы попытаться вспомнить некоторые из моих попыток, которые, как я думал, были близкими, я полагаю. – nycfdtd

ответ

5

решение LINQ:

var ordered = source.OrderBy(p => p.Talents.First(t => t.Id == 1).Skill).ToList(); 
+1

Это не удастся, если таланты равны нулю. Я думаю, что он также потерпит неудачу, если нет таланта с идентификатором 1. –

+0

Большое вам спасибо. Я вижу, что мне не хватало во всех моих попытках. Это была часть .Skill. Хотя у меня был навык, у меня его не было в правильном месте. Еще раз спасибо. – nycfdtd

+0

@ Эрик J: перед выполнением этой строки есть нулевая проверка, и в коде нет значения жесткого кода id, это было просто для целей. – nycfdtd