确定记录是否在LINQ to SQL中具有子项

时间:2013-08-20 23:41:26

标签: c# tsql linq-to-sql

我正在使用结构的分层表 ID,名称,FK_ID,排序键

直接在LINQ to SQL中获取数据:

var list = from ls in db.myTable
           where ls.FK_ID == levelId
           orderby ls.sortkey ascending
           select ls;

我可以通过链接到下一个levelId来遍历树。

但我无法弄清楚,如果在LINQ中有办法,检查是否有孩子

我可以构建一个视图,为每条记录添加一个标志,但如果可能的话,我宁愿在LINQ中这样做。

在SQL中添加这样一个标志的最佳做法是什么?

我检查每条记录的想法并不是最友好的解决方案。

1 个答案:

答案 0 :(得分:6)

如果您正确设置了外键,那么您是否没有1到多个映射属性?

即。你可以写

var listWithChildren = list.Where(l => l.Children.Any());

或走向另一个方向

var listWithParent = list.Where(l => l.FK_ID != null);

或使用查询表达式而不是流利

var listWithChildren = from item in list
                       where item.Children.Any()
                       select item;

正如您在评论中询问的布尔标志,您可以

var updatedList = from item in list
                  select new 
                  {
                    Item = item,
                    HasChildren = item.Children.Any()
                  };