C# ASP.NET MVC:将查询数据传输到控制器中的模型类对象

C# ASP.NET MVC:将查询数据传输到控制器中的模型类对象,c#,asp.net-mvc,entity-framework,viewmodel,C#,Asp.net Mvc,Entity Framework,Viewmodel,我有一个连接的查询 var DetailsQuery = (from a in db.aTable join b in db.bTable on a.carID equals b.ID where a.ID==id select new

我有一个连接的查询

  var DetailsQuery = (from a in db.aTable
                                 join b in db.bTable on a.carID equals b.ID
                                 where a.ID==id
                                    select new
                                 {
                                     ID = a.ID != null ? a.ID : 0,
                                     aName= a.aName,
                                     carName= b.carName,
                                 }).Take(1);
使用
Take(1)
是否正确?实际上,任何方法都必须只有一行具有这样的ID,所以我应该编写这个
Take(1)
,否则它将在没有它的情况下工作吗

现在,我为视图创建了一个新的模型类

public class ModifiedaTableModel
{
        [Key]
        [Required(ErrorMessage = "aIDis required.")]
        public int aID{ get; set; }
        [Required(ErrorMessage = "aName required.")]
        public string aName{ get; set; }
        [Required(ErrorMessage = "carName required.")]
        public string carName{ get; set; }
}
如何将此查询对象传输到此模型,以便在视图中显示它

  var DetailsQuery = (from a in db.aTable
                                 join b in db.bTable on a.carID equals b.ID
                                 where a.ID==id
                                    select new
                                 {
                                     ID = a.ID != null ? a.ID : 0,
                                     aName= a.aName,
                                     carName= b.carName,
                                 }).FirstOrDefault();
要在视图中使用视图模型,请执行以下操作:

@model <your project name>.ViewModels.ModifiedaTableModel;
@model.ViewModels.ModifiedaTableModel;
假设您的视图模型类位于“ViewModels”文件夹中。

控制器:

var DetailsQuery = from a in db.aTable
                   join b in db.bTable on a.carID equals b.ID
                   where a.ID == id
                   select new ModifiedaTableModel
                   {
                       ID = a.ID != null 
                            ? a.ID 
                            : 0,
                       aName = a.aName,
                       carName = b.carName
                   });

return View(DetailsQuery.FirstOrDefault());
视图(可能需要模型的命名空间):


如果仅选择匿名类型对象,则视图渲染期间可能会发生InvalidOperationException。

如果您不确定是否可以获得整个结果,请检查它是否不止一个,记录一些错误或其他内容,然后选择
.First()
@model ModifiedaTableModel