我有一些组织表链接到 OrgUser 表。
组织用户 >- 组织 -< 组织链接 -<
OrgLink 有 2 个 1toMany 链接,其中一个是 ParentOrg,另一个是 ChildOrg。
因此,一个典型的例子是 Joe Bloggs,他在隶属于“业务部”的“小型业务部门”工作。
OrgLink 中有一条记录将“Business Department”指向其“Small Business Unit”的子组织,该子组织有一个名为“Joe BLoggs”的 OrgUser。
如果我以“Joe Bloggs”的身份登录,那么我想获得他链接到的所有直属和父母组织的列表,所以在这种情况下,我希望获得“Small Business Unit”和“Business Department” . 我可以得到直接的组织,但父位让我感到困惑。此外,如果没有父级,则应返回直接组织。基本上应该返回所有链接到直接组织的组织。
到目前为止我的 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}
提前谢谢了。
编辑/更新:
对此进行研究后,我发现我不需要 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 的了解变得更好时,我会自己找到它!