代码之家  ›  专栏  ›  技术社区  ›  codeNinja

在一个Linq查询中,从多个表中获取数据

  •  0
  • codeNinja  · 技术社区  · 7 年前

    我有三张桌子:

    1. 会话-此存储有关培训的信息
    2. 外部参照课程教员-交叉参考培训和教师
    3. 用户-所有教师的列表

    在一个(或多个)LINQ查询中,我希望获得所有课程以及每个课程将进行培训的教师。在DB中,每个会话可以有零个或多个教师。

    sessions = db.sessions
    .Where(x => x.seminar_id == seminarId)
    .ToList()
    .Select((x, i) => new fees
    {
        id = x.id,
        sessionTitle = x.title,
    
        teacherNames = "By:" + String.Join(",",
                x.xref_session_faculty.ToList()
                .Select(q => db.users
                    .Where(m => m.id == q.user_id)
                    .Select(t => t.firstName).ToList()
                )
        )
    })
    .ToList();
    

    有了这个,老师的名字就打印出来了 By:System.Collections.Generic.List 1[System.String],System.Collections.Generic.List 1[System.String] .

    2 回复  |  直到 7 年前
        1
  •  1
  •   manish    7 年前
     teacherNames = "By:" + String.Join(",",
            x.xref_session_faculty.ToList()
            .Select(q => db.users
                .Where(m => m.id == q.user_id)
                .Select(t => t.firstName).FirstOrDefault()
            )
    )
    

    您需要将ToList更改为FirstOrDefault函数以获得正确的结果

        2
  •  0
  •   Tanveer Hasan    7 年前

    private var sessions = (from session in db.sessions.Where(x => x.seminar_id == seminarId) select new { id = session.id, sessionTitle = session.title, teacherNames = (from faculty in db.xref_session_faculty. where (x => x.session_id == session.id) join us in db.uses on faculty.user_id equals us.user_id select new { us.firstName, other_field_names }) });

    推荐文章