2

我有以下数据库设置。我希望完成的是在 Worker 选项卡中搜索一个工作人员,并返回结果用户根据图表所属的所有 BusinessAreas。我希望在 Lambda 表达式中完成此操作并返回顶级 BusinessArea 实体。如果需要,我可以让工作人员通过一些流程回到我想要的级别,但这需要我遍历不同的级别,直到我达到最高级别。

在此处输入图像描述

4

1 回答 1

2

听起来您想要这样的东西来查找单个用户的业务领域:

var results = WFE.BusinessAreas
    .Where(ba => ba.Processes
        .Any(p => p.WorkerProcesses
            .Any(wp => wp.UserId == "pmarshall")));

或者在查询语法中:

var results =
    from ba in WFE.BusinessAreas
    where ba.Processes.Any(p => p.WorkerProcesses.Any(wp => wp.UserId == "pmarshall"))
    select ba;

或者:

var results =
    from ba in WFE.BusinessAreas
    from p in ba.Processes
    from wp in p.WorkerProcesses
    where wp.UserId == "pmarshall"
    select ba;

如果您想查找所有用户的所有区域,您需要执行以下操作:

var results =
    (from ba in WFE.BusinessAreas
     from p in ba.Processes
     from wp in p.WorkerProcesses
     select new { ba, wp.UserId })
    .Distinct()
    .ToLookup(x => x.UserId, x => x.ba);

然后您可以使用results["pmarshall"].

于 2013-09-03T22:57:43.430 回答