首页 / C# / 在C#中从平面列表创建嵌套列表
在C#中从平面列表创建嵌套列表
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了在C#中从平面列表创建嵌套列表,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1989字,纯文字阅读大概需要3分钟。
内容图文
![在C#中从平面列表创建嵌套列表](/upload/InfoBanner/zyjiaocheng/811/5b2815275fca4e009ed0a884e78d916b.jpg)
我目前有以下课程:
public class NavigationItem
{
public int ID { get; set; }
public string Title { get; set; }
public int ParentID { get; set; }
public List<NavigationItem> Children { get; set; }
}
public class FlatItem
{
public int ID { get; set; }
public string Title { get; set; }
public int ParentID { get; set; }
}
我有一个示例数据如下:
+====+============+==========+
| ID | Title | ParentID |
+====+============+==========+
| 1 | Google | |
+----+------------+----------+
| 2 | Microsoft | |
+----+------------+----------+
| 3 | Oracle | |
+----+------------+----------+
| 4 | Gmail | 1 |
+----+------------+----------+
| 5 | Sheets | 1 |
+----+------------+----------+
| 6 | Adsense | 1 |
+----+------------+----------+
| 7 | Azure | 2 |
+----+------------+----------+
| 8 | SharePoint | 2 |
+----+------------+----------+
| 9 | Office | 2 |
+----+------------+----------+
| 10 | Java | 3 |
+----+------------+----------+
| 11 | Word | 9 |
+----+------------+----------+
| 12 | Excel | 9 |
+----+------------+----------+
| 13 | PowerPoint | 9 |
+----+------------+----------+
我已经有了代码从上面的示例数据中提取所有信息并将其转换为List< FlatItem>宾语.
什么是最好的方法,以便我可以有一个List< NavigationItem>对象如下所示:
>谷歌
> Gmail
>表格
> AdSense
>微软
> Azure
> SharePoint
>办公室
>单词
> Excel
> PowerPoint
>甲骨文
> Java
我正在考虑创建一个递归方法来遍历我的List< FlatItem>然后将其结构化为NavigationItem的嵌套列表.
解决方法:
不需要递归.您可以使用LINQ轻松构建结构:
List<FlatItem> flatItems = ...;
var navigationItems = flatItems.Select(
i => new NavigationItem { ID = i.ID, Title = i.Title, ParentID = i.ParentID }
).ToList();
foreach (var i in navigationItems)
i.Children = navigationItems.Where(n => n.ParentID == i.ID).ToList();
// get Google, Microsoft, Oracle items
var rootNavigationItems = navigationItems.Where(n => n.ParentID == 0);
内容总结
以上是互联网集市为您收集整理的在C#中从平面列表创建嵌套列表全部内容,希望文章能够帮你解决在C#中从平面列表创建嵌套列表所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。