gpt4 book ai didi

c# - 如何使用 Linq 对父集合和子集合进行排序?

转载 作者:太空狗 更新时间:2023-10-30 01:28:08 25 4
gpt4 key购买 nike

我有以下基本类(class)(针对这个问题进行了缩减):

public class Parent
{
public string Name { get; set; }
public IList<Child> Children { get; set; }
}

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

如果我有一个 Parent 集合,我想做的是获取一个按 Parent.Name 排序的 IList,并且每个父项的 Children 也需要按其名称排序。

我试过这个(只对 parent 进行排序,而不是对 child 进行排序):

IList<Parent> parents = ... //Populated

parents.OrderBy(p => p.Name).ThenBy(p => p.Children.OrderBy(c => c.Name)).ToList()

我搜索过但找不到任何东西(可能是我太笨了)。

对 Linq 新手有什么建议吗?

提前致谢

安迪

最佳答案

首先,按照您的方式在列表上调用 OrderBy 不会就地对其进行排序。它将返回一个新的排序 IEnumerable;你可以在上面使用 .ToList() 把它变成一个列表,但它仍然是一个副本。现在开始排序本身。您真的不仅需要对集合中的项目进行排序,还需要为每个项目制作一份副本,并将其 Children 排序。所以:

IList<Parent> parents = ... //Populated

parents = (from p in parents
orderby p.Name
select new Parent
{
Name = p.Name,
Children = p.Children.OrderBy(c => c.Name).ToList()
}
).ToList();

关于c# - 如何使用 Linq 对父集合和子集合进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1408331/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com