【问题标题】:How do I correctly use LINQ groupby for two tables joined via an intermediate table?如何为通过中间表连接的两个表正确使用 LINQ groupby?
【发布时间】:2019-11-02 19:19:57
【问题描述】:

我有三张桌子。

  1. 采访
  2. 面试官
  3. 面试时间表。

一个面试官可以安排多个面试

一个采访可以有多个采访者

所以,

  • InterviewSchedule 表包含 interviewidinterviewerid 列。 (多对多关系)
  • 采访表有列 - InterviewIdInterviewLocationInterviewSubject
  • Interviewer 表有列 - InterviewerIdInterviewerNameInterviewerTitle

现在,我想生成一份带有采访者详细信息采访报告。 我创建了一个dataobjectInterviewIdInterviewLocationInterviewSubjectList<Interviewer>

我正在尝试进行一个 LINQ 查询来获取我的输出。我使用 entityframework 并且已经创建了上下文。

我对 LINQ 有点陌生,但我认为这应该是可能的,而且我看到来自人们 groupby 的多个帖子,使用 ID。

我认为我的问题是我想通过中间表从两个表中选择多个字段。

var output = (from i in Interview 
              join ia in InterviewSchedule on i.interviewid equals ia.interviewid 
              join iw in Interviewers on ia.interviewerid equals iw.interviewerid) 
              group i by i.interviewid into g 
              select new {i, interviewers = new {interviewername, interviewertitle} };

此时我迷路了。这不是正确的方法吗?我是否必须创建一个“for”循环才能将所有面试官一个一个添加到列表中?

【问题讨论】:

标签: entity-framework linq linq-to-entities


【解决方案1】:

请试试这个

            var output = (from i in Interview
                          group i by i.InterviewId into g
                          join ia in InterviewSchedule on g.Key equals ia.InterviewId
                          join iw in Interviewers on g.Key equals iw.InterviewerId
                          select new { g.Key, interviewers = iw }).ToList();

LINQ: combining join and group by

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-04-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多