我正在使用以下内容尝试查找与特定组织关联的单个成员记录;
var dataRow = db.Organisation
.Include(x => x.Member.Select(m => m.Guid == MemberGuid))
.Where(x => x.Guid == OrganisationGuid)
.FirstOrDefault();
然而,这会引发以下错误;
" Include路径表达式必须引用在类型上定义的导航属性。使用虚线路径作为参考导航属性,使用Select运算符作为集合导航属性。参数名称:path"
包含路径有效,如果我取出"。选择(m => m.Guid == model.MemberGuid)"它返回组织的成员集合,然后我必须处理它以找到所需的成员。
有没有办法找到特定成员而不返回整个集合?
答案 0 :(得分:3)
您的查询中有两个错误。首先,您尝试使用.Select
来过滤记录,您只会在列中获得true/false
条记录。您应该使用.Where
代替。其次,.Include
接受导航属性,而不是查询。
var dataRow = db.Organisation
.Include(x => x.Member)
.Where(x => x.Member.Guid == MemberGuid && x.Guid == OrganisationGuid)
.FirstOrDefault();
另一种解决方案是使用join:
var dataRow = (from o in db.Organisation
join m in db.Member
on o.MemberGuid equals m.MemberGuid
where o.Guid == OrganisationGuid && m.Guid == MemberGuid
select o).FirstOrDefault();