MVC EF - 内部加入

Eli*_*ova 4 c# linq asp.net-mvc linq-to-entities entity-framework

我检查了可能已经有我答案的问题,但似乎没有一个问题解决了我的问题:

var semesters = db.Semesters.Where(e => e.ID == semester).ToList();
var semestersbyfaculty = db.SemestersByFaculty.Where(e => e.FacultyID == id).ToList();
Run Code Online (Sandbox Code Playgroud)

如何在SQL中执行以下操作,如何内连接这两个查询:

SELECT 
   Fac.*, Sem.SemesterText
FROM 
   SemestersByFaculty AS Fac
INNER JOIN
   Semesters AS Sem
ON
   Fac.SemesterID = Sem.ID
WHERE id
   Fac.FacultyID = id
Run Code Online (Sandbox Code Playgroud)

Nko*_*osi 7

内部联接

以下示例显示了一个简单的内部等值连接.

var query = from fac in db.SemesterByFaculty
            join sem in db.Semester on fac.SemesterID equals sem.ID
            where fac.FacultyID == id
            select new { Faculty = fac, SemesterText = sem.SemesterText };
Run Code Online (Sandbox Code Playgroud)

有关更多信息,请参见如何:执行内部联接(C#编程指南).

更新:

来自评论

楷模

class MyModel {
    public MitModel.SemestersByFacul??ty Faculty{ get; set; }
    public string SemesterText { get; set; }
}

class MyViewModel {
    public List<MyModel> SemesterFaculties { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

行动:

public ActionResult SomeAction(string id) {

    var query = from fac in db.SemesterByFaculty
                join sem in db.Semester on fac.SemesterID equals sem.ID
                where fac.FacultyID == id
                select new MyModel{ Faculty = fac, SemesterTest = sem.SemesterTest };

    var viewModel = new MyViewModel { SemesterFaculties = query.ToList() };
    return View(viewModel);
}
Run Code Online (Sandbox Code Playgroud)

视图

@Model MyViewModel
Run Code Online (Sandbox Code Playgroud)