Asp.net mvc 将var生成查询转换为强类型数据

Asp.net mvc 将var生成查询转换为强类型数据,asp.net-mvc,linq,Asp.net Mvc,Linq,我的控制器隐式创建var x,如下所示: var x = from sem in db.Semesters join ss in db.StudentSemesters on sem.Id equals ss.SemesterId into sss from ss in sss.Where(ss => ss.StudentId == id).DefaultIfEmpty() select new

我的控制器隐式创建var x,如下所示:

 var x = from sem in db.Semesters
         join ss in db.StudentSemesters on sem.Id equals ss.SemesterId into sss
                from ss in sss.Where(ss => ss.StudentId == id).DefaultIfEmpty()
                select new
                {
                    SemsterName = sem.Name,
                    SemesterId = sem.Id,
                    IsAssociated = ss.StudentId != null
                };
我不想按原样将此数据传递给视图,而是希望将其作为一个强类型的业务模型传递给视图模型中使用的名为StudentSemesterAssociation(成员:string-SemesterName、int-SemesterId、bool-StudentIsAssociated)的业务模型

我如何调整上面的var生成查询以返回StudentSemesterAssociation

ViewModel.StudentSemesterAssociation=


注意,Guy

在查询的
选择部分的
新建
关键字后添加您的类名:

 var x = from sem in db.Semesters
         join ss in db.StudentSemesters on sem.Id equals ss.SemesterId into sss
                from ss in sss.Where(ss => ss.StudentId == id).DefaultIfEmpty()
                select new StudentSemesterAssociation 
                {
                    SemsterName = sem.Name,
                    SemesterId = sem.Id,
                    IsAssociated = ss.StudentId != null
                };
这将使
x
type
IEnumerable
代替匿名类型的集合


顺便说一句,
var
不会使变量弱类型化。您应该阅读有关和隐式键入的局部变量的信息。

在查询的
选择
部分的
new
关键字后添加类名:

 var x = from sem in db.Semesters
         join ss in db.StudentSemesters on sem.Id equals ss.SemesterId into sss
                from ss in sss.Where(ss => ss.StudentId == id).DefaultIfEmpty()
                select new StudentSemesterAssociation 
                {
                    SemsterName = sem.Name,
                    SemesterId = sem.Id,
                    IsAssociated = ss.StudentId != null
                };
这将使
x
type
IEnumerable
代替匿名类型的集合


顺便说一句,
var
不会使变量弱类型化。您应该阅读有关和隐式键入的局部变量的信息。

在查询的
选择
部分的
new
关键字后添加类名:

 var x = from sem in db.Semesters
         join ss in db.StudentSemesters on sem.Id equals ss.SemesterId into sss
                from ss in sss.Where(ss => ss.StudentId == id).DefaultIfEmpty()
                select new StudentSemesterAssociation 
                {
                    SemsterName = sem.Name,
                    SemesterId = sem.Id,
                    IsAssociated = ss.StudentId != null
                };
这将使
x
type
IEnumerable
代替匿名类型的集合


顺便说一句,
var
不会使变量弱类型化。您应该阅读有关和隐式键入的局部变量的信息。

在查询的
选择
部分的
new
关键字后添加类名:

 var x = from sem in db.Semesters
         join ss in db.StudentSemesters on sem.Id equals ss.SemesterId into sss
                from ss in sss.Where(ss => ss.StudentId == id).DefaultIfEmpty()
                select new StudentSemesterAssociation 
                {
                    SemsterName = sem.Name,
                    SemesterId = sem.Id,
                    IsAssociated = ss.StudentId != null
                };
这将使
x
type
IEnumerable
代替匿名类型的集合

顺便说一句,
var
不会使变量弱类型化。您应该阅读有关和隐式类型局部变量的信息