【问题标题】:Get details record as property of master获取详细记录作为主人的财产
【发布时间】:2014-09-05 04:25:01
【问题描述】:

请考虑以下代码:

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.List1[NorthwindModel1.Order_Detail] ToList[Order_Detail](System.Collections.Generic.IEnumerable1[NorthwindModel1.Order_Detail])' 方法,并且此方法无法转换为存储表达式。

我想获得Orders 及其详细信息列表。

如何用一条 linq 语句做到这一点?

谢谢

【问题讨论】:

    标签: c# linq linq-to-entities


    【解决方案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();
    

    【讨论】:

    • 我正在使用Northwind数据库,并基于它创建一个实体框架模型
    • 我做了一些更新,请更改并重试@Kerezo
    • 好的,谢谢,这是我的错误。我使用了你的代码,但我得到了第一个错误:(
    • Additional information: LINQ to Entities does not recognize the method ...
    【解决方案2】:

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

    类似:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多