请考虑以下代码:
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语句执行此操作?
感谢
答案 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();