
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中查找顶级父级所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)