用lambda表达式关联多个列

时间:2019-04-09 11:41:16

标签: c# linq lambda

我在下面的查询中仅涉及ProcessId。我需要知道如何通过ProcessId和GroupId关联列表进程和pendingProcess。感激。

        return process.Join(
            pendingProcess,
            p => p.ProcessId,
            pp => pp.ProcessId,
            (p, pp) => new Process
            {
                ProcessId = p.ProcessId,
                GroupId = p.GroupId,
                Text = p.Text,
            }

        ).ToList();

2 个答案:

答案 0 :(得分:0)

通过匿名类型使用复合联接条件:

return process.Join(pendingProcess,
    p => new { p.ProcessId, p.GroupId }
    pp => new { ProcessId = (int)pp.ProcessId, pp.GroupId }
    (p, pp) => new Process
    {
        ProcessId = p.ProcessId,
        GroupId = p.GroupId,
        Text = p.Text,
    }).ToList();

答案 1 :(得分:0)

如果您喜欢lambda表达式;

return process
    .Where(p => pendingProcess.Any(pp=> pp.GroupId == p.GroupId && pp.Precessid == p.PreocessId))
    .Select(p=> new Process
            {
                ProcessId = p.ProcessId,
                GroupId = p.GroupId,
                Text = p.Text,
            }).ToList();