linq 获取详细信息记录作为master的属性

niwlg2el  于 2023-09-28  发布在  其他
关注(0)|答案(2)|浏览(112)

请考虑这个代码:

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

bprjcwpo

bprjcwpo1#

如果您使用EF,您可以在请求订单时.Include(“OrderDetails”)。虽然我承认我不记得是否northwind数据库有关系集。
例如:

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

b4wnujal2#

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

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

相关问题