我正在尝试获取外键ParentID == 0的行,这是我正在尝试但我得到NotSupportedException,因为它无法转换ArrayIndex [0]
:
IQueryable<ApplicationSectionNode> topLevelNodeQuery =
from n in uacEntitiesContext.ApplicationSectionNodeSet
where (int)n.Parent.EntityKey.EntityKeyValues[0].Value == 0
orderby n.Sequence
select n;
所以我需要从查询中提取ArrayIndex,以便运行时可以成功转换查询。我不知道怎么做。如何通过外键通过主键或一组对象查询特定对象?
编辑:请注意,表中实际上没有NodeId == 0的行,0是表示顶级节点的魔术值(不是我的想法)。所以我不能做n.Parent.NodeId == 0
答案 0 :(得分:1)
怎么样:
IQueryable<ApplicationSectionNode> topLevelNodeQuery =
from n in uacEntitiesContext.ApplicationSectionNodeSet
where (int)n.Parent.EntityKey.EntityKeyValues.First().Value == 0
orderby n.Sequence
select n;
答案 1 :(得分:1)
您应该可以使用where n.Parent == null
。可行的原因是EF在数据库中找不到ID为0的任何行,因此它将该属性设置为null(您可以以相同的方式查询它)。