我正在使用结构的分层表 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中添加这样一个标志的最佳做法是什么?
我检查每条记录的想法并不是最友好的解决方案。
答案 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()
};