我刚开始接触ASP.NET MVC,现在它处于Beta版本。在我的代码中,我运行了一个简单的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由从控制器传递的参数定义,或者我必须定义一个具体类型来从查询中填充?