如何使用Linq从单独的表中填充ONE View?

时间:2012-02-16 04:37:23

标签: c# linq

我有桌子:老师和学生。

我们有一个SpecialProjects表,教师和学生被分配到一起完成项目

SpecProjID, SpecProjName, isTeacher , teacherID , isStudent, studentID 

我们必须使用以下值填充每个特殊项目的View:FirstName,LastName,Email。 ToList()

我们需要从两个单独的表中获取信息,例如:

If isTeacher then get FirstName from Teacher table

If isStudent then get FirstName from Student table

并填充View.ToList()

如何使用Linq从单独的表中填充一个视图?

2 个答案:

答案 0 :(得分:1)

这是你想要的吗?

var view = Teachers.Select( 
              t => new { t.FirstName, t.LastName, t.Email } ).
           Union( Students.Select( 
              t => new { t.FirstName, t.LastName, t.Email }) ).ToList();

答案 1 :(得分:0)

@Phil谢谢,它有效..我能够让整个代码在你的帮助下工作。联盟很光滑:)

var rosterTeacher = ctx.SpecialProject
    .Where(sp => sp.caseID == cID && sp.isTeacher)
    .Join(ctx.Teachers, m => m.teacherID, p => p.teacherID,
          (sp, m) => new SpecProjRosterView
                        {
                            RosterEmail = m.memEMail,
                            RosterName = (m.memLastName + ", " + m.memFirstName),
                            RosterVerified = sp.caseRosterIsVerified
                        }).ToList();

var rosterStudents = ctx.SpecialProject
    .Where(c => c.caseID == cID && c.isStudents)
    .Join(ctx.CaseStudents, u => u.studentID, p => p.studentID,
          (sp, m) => new SpecProjRosterView
                        {
                            RosterEmail = m.caseStudentsEMail,
                            RosterName = (m.caseStudentsLastName + ", " + m.caseStudentsFirstName),
                            RosterVerified = sp.caseRosterIsVerified
                        }).ToList();

return rosterTeacher.Union(rosterStudents).ToList();
相关问题