首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在条件为parentID的parentID == 0和ID = (parentID)的表中写入查询记录

如何在条件为parentID的parentID == 0和ID = (parentID)的表中写入查询记录
EN

Stack Overflow用户
提问于 2011-03-30 07:22:24
回答 1查看 907关注 0票数 0

这里我的LINQ查询在表菜单中获得记录的条件是parentID == 0(get根菜单)和ID != (parentID list) (它是父ID列表是有子菜单记录的id ),我只想加载所有记录,包括没有子记录和子记录的根菜单:

代码语言:javascript
复制
List<Menu> menus = MenuDAO.Instance.GetAll(); // Get All Record in Menu Table
var parentID = (from p in menus where p.ParentID != 0 select new {p.ParentID}).Distinct(); // Get unique ParentID in Menu Table
        List<int> numParentID = new List<int>();
        foreach (var a in parentID)
        {
            numParentID.Add(a.ParentID);
        } // assign to a list <int>
        this.ddlMenu.DataSource = from m1 in menus
                                  where !(numParentID).Contains((int)m1.ID) && m1.ParentID == 0
                                  select new { m1.ID, m1.Name };
        this.ddlMenu.Databind();

我运行这个代码,我显示没有孩子的记录,不显示儿童记录。谁来帮我修一下。我新来的LINQ,非常感谢。

正如我在这里所期望的,结果是:没有任何子记录()的记录列表(),我的菜单表模式是: ID、Name、Order、ParentID。

EN

回答 1

Stack Overflow用户

发布于 2011-03-30 09:30:24

建议

1-您不需要在第一个选择中选择一个匿名对象,您可以将

代码语言:javascript
复制
var parentIDs = (from p in menus 
                 where p.ParentID != 0 
                 select p.ParentID).Distinct();

将集合命名为复数(parentIDs)总是一种很好的做法

2-不需要迭代来创建new List<>,所以您可以在一个查询中将它们全部写入

代码语言:javascript
复制
  List<int> numParentIDs = (from p in menus 
                            where p.ParentID != 0 
                            select p.ParentID).Distinct().ToList();

答:首先选择所有叶级的子ID。获取除ParentID列中的值以外的所有ID。然后,通过加入传单do从菜单中进行选择。

代码语言:javascript
复制
var leafMenuIDs = menus
                    .Select(m => m.ID)
                    .Except(menus.Select(m => m.ParentID).Distinct())                                         
                    .Distinct();


 this.ddlMenu.DataSource = from m in menus
                           join id in leafMenuIDs on m.ID equals id
                           select new { m.ID, m.Name };
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5483184

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档