C# 按内部属性列表对列表进行排序

本文关键字:列表 排序 内部 属性 | 更新日期: 2023-09-27 18:35:52

假设我有一个这样的对象。

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>的顺序对母亲名单进行排序

有什么建议吗?

C# 按内部属性列表对列表进行排序

如果列表是等数的,并且所有母亲都有孩子,反之亦然,那么这是开箱即用的。如果母亲多于孩子,或者孩子不在孩子名单上的母亲,那么这些母亲就不会被归还。同样,如果子女多于母亲或母亲不在母亲名单上的儿童,则这些子女的后代不会返回。

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();