C#列表<;项目>;父子关系,按字母顺序排列项目
我有一门课:C#列表<;项目>;父子关系,按字母顺序排列项目,c#,C#,我有一门课: public class Item { public Item() { Items = new List<Item>(); } public string ItemId { get; set; } public string ParentId { get; set; } public string Title { get; set; } public List<Item> Items { get; se
public class Item
{
public Item()
{
Items = new List<Item>();
}
public string ItemId { get; set; }
public string ParentId { get; set; }
public string Title { get; set; }
public List<Item> Items { get; set; }
}
公共类项目
{
公共项目()
{
项目=新列表();
}
公共字符串ItemId{get;set;}
公共字符串ParentId{get;set;}
公共字符串标题{get;set;}
公共列表项{get;set;}
}
现在我可以创建一个列表:
List<Item> list = new List<Item>();
List List=新列表();
如何按字母顺序对列表及其子项进行递归排序
这是我的尝试:
list.OrderList();
private static void OrderList(this List<Item> list)
{
foreach (Item item in list)
{
if (item != null && item.Items != null && item.Items.Count > 0)
{
item.Items.OrderChildList();
}
}
}
private static void OrderChildList(this List<Item> list)
{
list = list.OrderBy(t => t.Title).ToList();
}
list.OrderList();
私有静态无效订单列表(此列表)
{
foreach(列表中的项目)
{
if(item!=null&&item.Items!=null&&item.Items.Count>0)
{
item.Items.OrderChildList();
}
}
}
私有静态void OrderChildList(此列表)
{
list=list.OrderBy(t=>t.Title.ToList();
}
如问题中所述,每个列表都是独立排序的。因此,一个简单的递归可以:
void SortRecursively(List<Item> items) {
foreach (var item in items) {
item.Items = item.Items.OrderBy(i => i.Title).ToList();
SortRecursively(item.Items);
}
}
void sortrecurously(列表项){
foreach(项目中的var项目){
item.Items=item.Items.OrderBy(i=>i.Title.ToList();
粗略排序(item.Items);
}
}
(这假设这是一个非循环图,处理周期需要跟踪哪些项目已排序并跳过它们。)这应该可以做到吗
private static void OrderList(Item item)
{
foreach (Item item in item.Items)
{
if (item != null && item.Items != null && item.Items.Count > 0)
{
OrderList(item);
}
}
Items = Items.OrderBy(i => i.Title).ToList()
}
这对我很有用:
public void OrderList()
{
if (Items.Count == 0)
return;
Items = Items.OrderBy(e => e.Title).ToList();
Items.ForEach(e => e.OrderList());
}
就地分拣:
static void OrderList(List<Item> l)
{
l.Sort((i1,i2) => i1.Title.CompareTo(i2.Title));
foreach (var item in l)
OrderList (item.Items);
}
静态无效订单列表(列表l)
{
l、 排序((i1,i2)=>i1.Title.CompareTo(i2.Title));
foreach(l中的var项目)
订单列表(item.Items);
}
子项的相对顺序是否影响父项的顺序(即,这只是对每个列表进行独立排序)?父项已排序。在list.orderList()之前
I调用list.OrderBy(t=>t.Title)代码>将为父级排序。现在我必须遍历每个家长,检查是否有孩子对他们进行排序,然后对每个孩子检查是否有孩子并对他们进行排序。。。诸如此类。所有子项是否也会在主列表中?