渴望加载子级以进行LINQ存储过程调用

时间:2010-09-23 15:56:33

标签: c# linq-to-sql linq-to-entities asp.net-3.5

我有一个特殊的存储过程,它从我的数据库中返回一个分发者列表。然后我遍历Distributors循环并将结果输出到网页。但是,我需要为每个经销商加载州和国家。我宁愿在循环之前执行此操作,以便页面更快。这是我的代码:

List<Distributor> distQuery =  connection.spDistFindLocal(Lat, Long).ToList<Distributor>();

我知道我可以对我列表中的每个元素进行distributor.State.Load();,但我认为这是一个糟糕的选择。我还有其他选择吗?

1 个答案:

答案 0 :(得分:1)

使用投影:

List<DistributorViewModel> distQuery =  
    (from d in connection.spDistFindLocal(Lat, Long)
     select new DistributorViewModel
     {
         Name = d.Name,
         State = d.State.Name,
         Country = d.Country.Name
     })ToList();

这不仅会在一个查询中加载所有数据,而且还会忽略为此视图加载您不关心的属性。