C# 如何在加入linq查询后打印

C# 如何在加入linq查询后打印,c#,asp.net,linq,asp.net-mvc-3,C#,Asp.net,Linq,Asp.net Mvc 3,我有以下代码: public ActionResult Index() { MembershipUser currentUser = Membership.GetUser(); Guid UserId = (Guid)currentUser.ProviderUserKey; var users = from m in db.Users join m2 in db.MyProfiles on m.Use

我有以下代码:

 public ActionResult Index()
{


        MembershipUser currentUser = Membership.GetUser();
        Guid UserId = (Guid)currentUser.ProviderUserKey;
        var users = from m in db.Users
                    join m2 in db.MyProfiles on  m.UserId equals m2.UserId
                    where m.UserId == UserId
                    select new{UserName = m.UserName, LastActivityDate = m.LastActivityDate,
                       Address =  m2.Address, City = m2.City, State = m2.State, Zip = m2.Zip};
        return View(users);

}

此代码在我的控制器中,我想运行此查询,然后将结果打印到我的视图中,如何写入视图?

此代码无法工作,因为您的LINQ查询返回匿名对象,因此您无法强式键入视图。因此,第一步是定义一个视图模型,该模型将表示您希望在视图上显示的信息:

public class UserViewModel
{
    public string UserName { get; set; }
    public DateTime LastActivityDate { get; set; }
    public string Address { get; set; }
    public string City { get; set; }
    public string State { get; set; }
    public string Zip { get; set; }
}
然后,在控制器操作中,您将返回此视图模型的集合:

public ActionResult Index()
{
    var currentUser = Membership.GetUser();
    var userId = (Guid)currentUser.ProviderUserKey;
    var users = 
        from m in db.Users
        join m2 in db.MyProfiles on m.UserId equals m2.UserId
        where m.UserId == userId
        select new UserViewModel
        {
            UserName = m.UserName, 
            LastActivityDate = m.LastActivityDate,
            Address =  m2.Address, 
            City = m2.City, 
            State = m2.State, 
            Zip = m2.Zip
        };
    return View(users);
}
最后,在强类型视图中:

@model IEnumerable<AppName.Models.UserViewModel>
@Html.DisplayForModel()

您需要获取用户类型,并创建该类型的列表视图。创建视图的最简单方法是在控制器方法中单击鼠标右键,然后选择“创建视图”。这也将确保正确完成路由

    //if your question is how to display(Print!) a view for above query then in ActionResult Index()
    //1] As as best practise always Create a ViewModel - UserViewModel
      public class UserviewModel
      {
        public string Username {get;set;}
        public string Address {get;set;}
      }

    //2] Assign db.user values to UserviewModel or you can use Automapper

    //and 3] then return this viewmodel to view  
    return View(UserviewModel);
    //if your question is how to display(Print!) a view for above query then in ActionResult Index()
    //1] As as best practise always Create a ViewModel - UserViewModel
      public class UserviewModel
      {
        public string Username {get;set;}
        public string Address {get;set;}
      }

    //2] Assign db.user values to UserviewModel or you can use Automapper

    //and 3] then return this viewmodel to view  
    return View(UserviewModel);