【问题标题】:How do I fill ONE View from Separate Tables using Linq?如何使用 Linq 从单独的表中填充一个视图?
【发布时间】:2012-02-16 04:37:23
【问题描述】:

我有表:教师和学生。

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

SpecProjID, SpecProjName, isTeacher , teacherID , isStudent, studentID 

我们必须为每个特殊项目的视图填充值:FirstName、LastName、Email。 ToList()

我们需要使用如下逻辑从两个单独的表中获取信息:

If isTeacher then get FirstName from Teacher table

If isStudent then get FirstName from Student table

并填写 View.ToList()

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

【问题讨论】:

标签: c# linq


【解决方案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();

【讨论】:

    【解决方案2】:

    @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();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多