【发布时间】:2010-09-18 10:22:24
【问题描述】:
我刚刚开始使用 ASP.NET MVC,因为它处于测试阶段。在我的代码中,我正在运行一个简单的 LINQ to SQL 查询来获取结果列表并将其传递给我的视图。这种事:
var ords = from o in db.Orders
where o.OrderDate == DateTime.Today
select o;
return View(ords);
但是,在我的视图中,我意识到我需要访问每个订单的客户姓名。我开始使用o.Customer.Name,但我相当确定这是为每个订单执行单独的查询(因为 LINQ 的延迟加载)。
减少查询数量的合乎逻辑的方法是同时选择客户名称。比如:
var ords = from o in db.Orders
from c in db.Customers
where o.OrderDate == DateTime.Today
and o.CustomerID == c.CustomerID
select new { o.OrderID, /* ... */, c.CustomerName };
return View(ords);
除了现在我的“ords”变量是匿名类型的 IEnumerable。
是否可以声明一个 ASP.NET MVC 视图,使其接受一个 IEnumerable 作为其视图数据,其中 T 由从控制器传递的内容定义,或者我必须定义一个具体类型来填充来自我的查询?
【问题讨论】:
标签: asp.net-mvc