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>
的顺序对母亲名单进行排序
有什么建议吗?
如果列表是等数的,并且所有母亲都有孩子,反之亦然,那么这是开箱即用的。如果母亲多于孩子,或者孩子不在孩子名单上的母亲,那么这些母亲就不会被归还。同样,如果子女多于母亲或母亲不在母亲名单上的儿童,则这些子女的后代不会返回。
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();