2016-02-23 3 views
1

Предположим, что у меня есть объект вроде так ..C# Список Сортировать по Список внутренних свойств

public class Child 
{ 
    public string Name {get;set;} 
    public int Age {get;set;} 
} 

public class Mother 
{ 
    public string Name {get;set;} 
    public Child child; 
} 

А теперь у меня есть список матерей

List<Mother> 

У меня уже есть List<Child> заказал

Ребенок от 1 до 1 с Матерью.

Я хотел бы заказать список Матери на основе порядка List<Child>

Любые предложения?

+0

Все ли эти члены действительно являются частными полями, или вы просто отказались от модификаторов доступа? –

+0

Что вы пытаетесь заказать? Любая компания не должна быть одной для многих? – Dispersia

+0

Пример строго гипотетический. Я обновлю пример, чтобы предотвратить путаницу. – Proximo

ответ

1

Если список является равноденным, а все матери имеют ребенка и наоборот, то это работает из коробки. Если есть больше матерей, чем детей или матерей, чей ребенок не находится в списке детей, то эти матери не возвращаются. Точно так же, если детей больше, чем матерей или детей, чья мать не входит в список матерей, тогда моджеры этих детей не возвращаются.

public IEnumerable<Mother> GetOrderedMothersByChildren(
    IEnumerable<Mother> mothers, IEnumerable<Child> children) 
{ 
    foreach (var child in children) 
    { 
     var mother = mothers.FirstOrDefault(m => m.Child == child); 
     if (mother != null) 
      yield return mother; 
    } 
} 

//Usage 
var orderedMothers = GetOrderedMothersByChildren(mothers, children).ToList(); 
+0

Точно то, что я искал .. Цените, что – Proximo

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