c# – 使用LINQ在List中查找顶级父级

c# – 使用LINQ在List中查找顶级父级,第1张

概述我有一个具有ID和ParentID的用户定义对象列表.列表看起来像这样. ParentID ID 123 345 123 456 456 567 456 678 678 789 我需要一个LINQ语句来查找顶级父级;也就是说,ParentID不存在的所有对象都作为ID(在本例中,仅为123). 这是我 我有一个具有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()在大型集合上的表现.

总结

以上是内存溢出为你收集整理的c# – 使用LINQ在List中查找顶级父级全部内容,希望文章能够帮你解决c# – 使用LINQ在List中查找顶级父级所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/1219593.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-05
下一篇2022-06-05

发表评论

登录后才能评论

评论列表(0条)

    保存