1

我有一些组织表链接到 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 的了解变得更好时,我会自己找到它!

4

0 回答 0