- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
MyClass
由 ID
组成ParentID
和 List<MyClass>
作为Children
我有 MyClass
的列表像这样
ID ParentID
1 0
2 7
3 1
4 5
5 1
6 2
7 1
8 6
9 0
10 9
输出(分层列表)为 List<MyClass>
1 __ 3
|__ 5__ 4
|__ 7__ 2__ 6__ 8
|__ 11
9 __10
在 linq 中实现这一点的最简单方法是什么?
附:ParentID
未排序
编辑:
我的尝试:
class MyClass
{
public int ID;
public int ParentID;
public List<MyClass> Children = new List<MyClass>();
public MyClass(int id, int parent_id)
{
ID = id;
ParentID = parent_id;
}
}
初始化样本数据并尝试到达分层数据
List<MyClass> items = new List<MyClass>()
{
new MyClass(1, 0),
new MyClass(2, 7),
new MyClass(3, 1),
new MyClass(4, 5),
new MyClass(5, 1),
new MyClass(6, 2),
new MyClass(7,1),
new MyClass(8, 6),
new MyClass(9, 0),
new MyClass(10, 9),
new MyClass(11, 7),
};
Dictionary<int, MyClass> dic = items.ToDictionary(ee => ee.ID);
foreach (var c in items)
if (dic.ContainsKey(c.ParentID))
dic[c.ParentID].Children.Add(c);
如你所见,字典里还有很多我不想要的条目
最佳答案
如果您在过滤之前建立父子关系,则此处不需要递归。由于列表的成员保持相同的对象,只要您将列表的每个成员与其直接子项相关联,就会建立所有必要的关系。
这可以分两行完成:
items.ForEach(item => item.Children = items.Where(child => child.ParentID == item.ID)
.ToList());
List<MyClass> topItems = items.Where(item => item.ParentID == 0).ToList();
关于c# - (ID/ParentID) 列表到分层列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9409021/
我正在尝试将新的父项目和新的子项目保存到遗留数据库 我的数据很好,当我保存它时,它同时保存了父项和子项。但是 child 的 SillyNameParentId 始终为 0 我无法更改表结构,所以我必
如何在同一张表上设置父子关系? Id int, title string, ParentId int ---> this is refer to Id 最佳答案 您使用的是什么 ActiveReco
我有以下结构: MyClass { guid ID guid ParentID string Name } 我想创建一个数组,其中包含按照元素应在层次结构中显示的顺序排列的元素(例如,根据
MyClass由 ID 组成ParentID和 List作为Children 我有 MyClass 的列表像这样 ID ParentID 1 0 2 7 3 1 4 5 5 1
我需要一些帮助来构建一个查询,以便我过滤以下数据。 Table: MyTree Id ParentId Visible ===================== 1 null 0
我有一张这样的 table foo(id, parentId) -- there is a FK constraint from parentId to id 我需要删除一个项目及其所有 child
我有一个看似简单的任务,但我遇到的麻烦远比我愿意承认的要多。我有一个层次表,我需要查询和显示由父级和相关子级分组的结果。 我当前的 LINQ 查询: var quests = Questions.In
我有一个看似简单的任务,但我遇到的麻烦远比我愿意承认的要多。我有一个层次表,我需要查询和显示由父级和相关子级分组的结果。 我当前的 LINQ 查询: var quests = Questions.In
网站核心 reference谈谈你可以在Query中使用的一些属性,包括@@templatename、@@id和@@parentid等。 parentid 似乎不起作用 - /sitecore/con
我有以下两个数据库表: 新闻表: newsID, topic, categoryID 类别表: categoryID, title, parentID 我想获取 newsID、主题、主类别的标题,如果
//Set Parent ID for the rest of the Reports data sources this.ReportDataSources.ToList().ForEach(rds
每个父元素都应包含所有子类别的总数。如果解决方案将使用仅 Array 对象方法而不使用 while 循环,那将是非常好的。 这是基础结构的例子: const base = [ { id: 1, c
我会尽量解释清楚。这是我的查询.. SELECT * FROM mm_star_ratings s JOIN mm_posts p ON s.post_id = p.postid WHERE p.ty
我有一个类似 records(ID, ParentID) 的表,其中包含以下数据: ID ParentID 1 null 2 1 3 2 4 2 5 3
我有两个数组。两者都包含具有唯一 id 和 parentid 值的对象(给定的 id 只是示例,实际上它们是由 uuid 生成器生成的)。第一个是按照 parentid 不同于“parent”的对象位
这是表的示例结构: ID Name ParentID ----------------------- 1 Ancestor NULL 2 GrandFather
我有一个具有多层嵌套的层次结构树 JSON。当我尝试循环 JSON 以在 UI 中显示树结构时。我最终得到了循环冗余,因为父 ID 在不同级别上是相同的。我需要为parentID和ID添加唯一标识符,
给定一个平面级别的对象数组,根据 parent 和 id 属性嵌套它们的最有效和现代的方法是什么?顶层对象没有parentId,嵌套层数没有限制。 [{ id: 'OS:MacOS', typ
给定一个平面级别的对象数组,根据 parent 和 id 属性嵌套它们的最有效和现代的方法是什么?顶层对象没有parentId,嵌套层数没有限制。 [{ id: 'OS:MacOS', typ
我正在为我的应用程序编写一个 CMIS 接口(interface)。此接口(interface)返回 cmis:document作为 cmis:folder 的子对象的对象目的。这里是 a part
我是一名优秀的程序员,十分优秀!