c# – 使用LINQ在List中查找顶级父级
发布时间:2020-12-15 23:24:25 所属栏目:百科 来源:网络整理
导读:我有一个具有ID和ParentID的用户定义对象列表.列表看起来像这样. ParentID ID 123 345 123 456 456 567 456 678 678 789 我需要一个LINQ语句来查找顶级父级;也就是说,ParentID不存在的所有对象都作为ID(在本例中,仅为123). 这是我到目前为止,它返回567,678,7
我有一个具有ID和ParentID的用户定义对象列表.列表看起来像这样.
ParentID ID 123 345 123 456 456 567 456 678 678 789 我需要一个LINQ语句来查找顶级父级;也就是说,ParentID不存在的所有对象都作为ID(在本例中,仅为123). 这是我到目前为止,它返回567,678,789. parentList = baseList.Where(b => !baseList.Select(o => o.ParentID).Distinct().Contains(b.ID)).ToList(); 解决方法
您当前的查询正在尝试查找其ID与任何其他项目的父ID不对应的所有项目 – 换句话说,您正在查找所有无子节点.
你想要的是所有无父节点 – 那些父ID与任何其他项的ID不匹配的节点. var ids = new HashSet<int>(baseList.Select(o => o.ID)); var itemsWithNoParent = baseList.Where(o => !ids.Contains(o.ParentID)) .ToList(); 我正在使用HashSet<>确保合理.Contains()在大型集合上的表现. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- NoSQL解决方案比较(MongoDB vs Redis, Tokyo Cabinet, and
- Professional Wikis (Programmer to Programmer) (Paperbac
- 如何使用Swift格式化JSON日期字符串?
- ruby-on-rails – 如何在名为“有效”的列的数据库上使用Ac
- ruby-on-rails – 路由错误未初始化的常量API轨道
- flex库项目用default.css定义默认样式
- ajax获取dataset数据 无刷新
- 依赖注入 – 如何使用Unity 2.0注入Log4Net ILog实现
- BlazeDS介绍(http://blog.csdn.net/hgy82/article/details/
- c# – 如何检查Windows Phone 8.1 Universal应用程序中的后