我有一些链接到OrgUser表的组织表。
OrgUser> - 组织 - < OrgLink - <
OrgLink有2个1toMany链接,其中一个是ParentOrg,另一个是ChildOrg。
一个典型的例子是Joe Bloggs,他在“小企业部门”工作,这是“商务部”的一部分。
OrgLink中有一条记录,将“业务部门”指向其“小企业单位”的子组织,其中有一个名为“Joe BLoggs”的OrgUser。
如果我以“Joe Bloggs”身份登录,那么我想获得他所链接的所有直接和父母组织的列表,所以在这种情况下我希望得到“小企业单位”和“商业部门”。我可以立即获得组织,但是父母的位置令我感到困惑。此外,如果没有父母,那么应该只返回直接组织。基本上所有与直接组织有关的组织都应该被退回。
我的LINQ到目前为止:
from SOU in StdOrgUser
join SO in StdOrg on SOU.StdOrgId equals SO.Id
where SOU.UserId.Equals(new Guid("42995B01-97C8-4148-8EA3-5CCC55535194"))
select new { OrgName=SO.Name, Col2= SOU.UserId, c3=SO.StdOrgType.Name}
非常感谢提前。
EDIT / UPDATE:
研究过这个后,我发现我不需要JOIN或INCLUDE,因为我的EF模型具有所需的关联,因此显示为导航属性。我最终使用了带有2个LINQ查询的UNION,因此伪代码是:
var results1 = Get child organisation that UserId works for.
var results2 = Get parent organisation for child organisation if it exists.
var results3 = results1.Union(results2)
foreach org in results3
{
console.writeline(org.Id);
console.writeline(org.Name);
}
我确信有一种更有说服力的方法,并且可以随意提出建议,但这种方法确实有效。也许当我对LINQ的了解变得更好时,我会自己找到它!