【问题标题】:Linq join query displayed in MVC viewMVC 视图中显示的 Linq 连接查询
【发布时间】:2010-11-30 21:16:20
【问题描述】:

我正在尝试在部分 Web 视图中显示 linq 连接查询。

这是我在控制器中的查询:

public ActionResult InactiveUsers()
        {
            using (ModelContainer ctn = new ModelContainer())
            {
                DateTime duration = DateTime.Now.AddDays(-3);

                var inactive = from usrs in ctn.aspnet_Users
                               where usrs.LastActivityDate <= duration
                               join o in ctn.Groups on
                               usrs.UserId equals o.UserID
                               select new
                               {
                                   usrs.UserName,
                                   usrs.LastActivityDate,
                                   o.PrimaryPhoneNumber,
                               };

                return View(inactive.ToList());
            }

        }

我有点困惑的是下一步该做什么。我熟悉使用模型添加强类型视图,但是在我有连接查询的情况下会发生什么?

如果有人能指出我正确的方向,我将不胜感激。

谢谢。

【问题讨论】:

    标签: c# asp.net-mvc linq join


    【解决方案1】:

    一种解决方案是使用“ViewModel”模式。与其创建匿名类型,不如创建一个包含您要显示的数据的视图模型。只需填充它并将其传递给您的视图。

    当使用这个模式时,我们创建 强类型类 针对我们的特定视图进行了优化 场景,并公开属性 对于所需的动态值/内容 通过我们的视图模板。我们的控制器 然后类可以填充并通过 这些视图优化的类到我们的 查看要使用的模板。这使 类型安全,编译时检查, 和编辑器智能感知 模板。

    【讨论】:

      【解决方案2】:

      您可以为连接结果创建一个类,然后照常为其创建一个模型,而不是返回一个匿名类型的 IEnumerable:

                  var inactive = from usrs in ctn.aspnet_Users
                                 where usrs.LastActivityDate <= duration
                                 join o in ctn.Groups on
                                 usrs.UserId equals o.UserID
                                 select new InactiveUser(usrs.UserName, usrs.LastActivityDate, o.PrimaryPhoneNumber);
      

      使用 InactiveUser 类,该类有一个构造函数,该构造函数接受用户名、日期和电话号码。

      【讨论】:

      • 感谢您的回复。照你说的做了,现在效果很好。谢谢你:)
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多