我如何 select 从多个 table 和 return 结果到视图 mvc 5

how do i select from multiple table and return the result to the view mvc 5

我正在尝试在我的索引视图中显示此查询的结果,但它正在报告错误,我已尝试对其进行调试,但没有成功,如果有人可以帮助我知道我在哪里,我将不胜感激出错了。

    public ActionResult Index()
    {           
       var users =
        (from u in db.Users
                     join s in db.States
                         on u.StateId
                         equals s.StateId

                     join l in db.Lgas
                         on u.LgaId
                         equals l.LgaId
                     select new
                     {
                         u.Surname,
                         u.Firstname,
                         u.Othernames,
                         u.Email,
                         s.StateName,
                         l.LgaName
                     }).ToList();


        return View(users);
    }

您不能将匿名对象传递给视图,因为每个 属性 标记为 internal 的匿名对象和视图都在不同的命名空间中。 Here is great explanation.

使用 ViewModel - 这是最好的解决方案。

视图模型示例:

public class UserViewModel
{
   public string Surname { get; set; }
   public string Firstname { get; set; }
   public string Othernames { get; set; }
   public string Email { get; set; }
   public string StateName { get; set; }
   public string LgaName { get; set; }
}

您的控制器:

public ActionResult Index()
{           
   var users =
    (from u in db.Users
                 join s in db.States
                     on u.StateId
                     equals s.StateId

                 join l in db.Lgas
                     on u.LgaId
                     equals l.LgaId
                 select new UserViewModel
                 {
                    Surname =  u.Surname,
                    Firstname = u.Firstname,
                    Othernames = u.Othernames,
                    Email = u.Email,
                    StateName = s.StateName,
                    LgaName = l.LgaName
                 }).ToList();


    return View(users);
}

在您的视图开头:

@model List<YourViewModelNamespase.UserViewModel>

YourViewModelNamespase 更改为 UserViewModel class 的实际命名空间。

在您的视图中,您可以随心所欲地处理数据 Model 属性。