获取详细记录为master的属性

时间:2014-07-15 05:19:50

标签: c# linq linq-to-entities

请考虑以下代码:

var res = (from a in ent.Orders
           where a.OrderID < 10252
           select new
           {
               OrderId=a.OrderID,
               OrderDate = a.OrderDate,
               OrderDetails=ent.Order_Details.Where(o=>o.OrderID == a.OrderID).ToList()
           }).ToList() ;

当我运行此代码时出现此错误:

  

其他信息:LINQ to Entities无法识别方法'System.Collections.Generic.List 1[NorthwindModel1.Order_Detail] ToList[Order_Detail](System.Collections.Generic.IEnumerable 1 [NorthwindModel1.Order_Detail])'方法,并且此方法无法转换为商店表达式。

我希望Orders列出他们的详细信息。

如何使用一个linq语句执行此操作?

感谢

2 个答案:

答案 0 :(得分:1)

你可以制作一个模型类,如下所示: -

public class ViewModelClass
{
     public int OrderId{ get; set; }
     public int OrderDate { get; set; }
     public List<NorthwindModel1.Order_Detail> OrderDetails{ get; set; }
}

然后在您的查询中: -

var res = (from a in ent.Orders
           where a.OrderID < 10252
           select new ViewModelClass
           {
               OrderId=a.OrderID,
               OrderDate = a.OrderDate,
               OrderDetails=ent.Order_Details.Where(o=>o.OrderID == a.OrderID).ToList()
           }).ToList();

答案 1 :(得分:0)

如果您使用EF,您可以在请求订单时包括(&#34; OrderDetails&#34;)。虽然我承认我不记得northwind数据库是否设置了关系。

类似的东西:

 var dbctx= new NorthwindContext();
 var orders= dbctx.Orders.Include("OrderDetails").Where(o=>o.OrderID<10252).ToList();