获取详细记录作为主人的财产

本文关键字:主人 财产 记录 获取 | 更新日期: 2023-09-27 18:12:51

请考虑以下代码:

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语句做到这一点?

谢谢

获取详细记录作为主人的财产

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

类似:

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

你可以创建一个如下所示的模型类:

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();