gpt4 book ai didi

c# - 按父项和子项排列的订单列表

转载 作者:太空狗 更新时间:2023-10-29 20:20:37 24 4
gpt4 key购买 nike

我有一个必须由 parent 订购的产品列表,然后是该 parent 的所有 child ,然后是下一个 parent ,等等。

Product One
Child One
Child Two
Product Two
Child One

这些产品都在一个带有父id字段的表中,子产品有一个父id,但父项可以有一个空的父项(表示该产品是顶级产品)

Sample table

我的想法是这样的:

var list = GetProductList();
var newList = new List<ProductDTO>();

var parents = from p in list
where p.Parent == null
select p.Id;


foreach (var parent in parents)
{
var tempList = new List<ProductDTO>();
tempList.Add(list.FirstOrDefault(x => x.Id == parent));
tempList.AddRange(list.Where(x => x.Parent == parent).OrderBy(x => x.Id));
newList.AddRange(tempList);
}

有什么建议可以让我做得更干净一些吗?

最佳答案

你可以尝试类似的东西。假设 parent 可以为空:

var sorted = list.OrderBy(x => x.parent ?? x.id).ThenBy(x=>x.id);

如果它是一个字符串:

            var sorted = list.OrderBy(x =>
{
if (x.parent == "null")
return x.id;
else
return Convert.ToInt32(x.parent);
}).ThenBy(x => x.id);

关于c# - 按父项和子项排列的订单列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22072368/

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