我有一个必须由父母订购的产品列表,然后是该父母的所有孩子,然后是下一个父母,等等。
Product One
Child One
Child Two
Product Two
Child One
这些产品都在一个带有父 id 字段的表中,子产品有父 id,但父项可以有空父项(表明该产品是顶级产品)
我在想类似以下的事情:
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);
}
关于如何做得更干净一点有什么建议吗?
你可以尝试类似的事情。假设父级可以为空:
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);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)