加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – LINQ to Entities无法将方法Generic.List(int)识别为Gener

发布时间:2020-12-15 19:46:36 所属栏目:百科 来源:网络整理
导读:数据库包含订单. 订单可以包含在一组订单中. 对于每组订单,它可以包含1到多个订单. 但是,Orders可以为NULLO值分配GroupOrderId,因为之前的Orders没有分组概念.只有新订单强制执行添加到组的概念. 要为每个订单执行操作而要填充的类结构是 public class Order
数据库包含订单.
订单可以包含在一组订单中.
对于每组订单,它可以包含1到多个订单.

但是,Orders可以为NULLO值分配GroupOrderId,因为之前的Orders没有分组概念.只有新订单强制执行添加到组的概念.

要为每个订单执行操作而要填充的类结构是

public class OrdersGroup
{
    public int? GroupOrderId { get; set; }
    public List<int> OrderIds { get; set; }
}

linq声明

var workPacketOrdersList = (from o in db.Orders
                                    where
                                        o.GroupOrderId >= groupOrderIdMin && o.GroupOrderId <= groupOrderIdMax &&
                                        o.IsDeleted == false
                                    orderby o.WorkPacketId ascending
                                    group o by o.WorkPacketId
                                    into grp
                                    select new OrdersGroup
                                               {
                                                   GroupOrderId = grp.Key,OrderIds = grp.Select(g => g.OrderId).ToList()
                                               }).ToList();

完全例外

LINQ to Entities does not recognize the method 'System.Collections.Generic.List`1[System.Int32] ToList[Int32](System.Collections.Generic.IEnumerable`1[System.Int32])' method,and this method cannot be translated into a store expression.

我看到linq查询的返回类型是List< OrdersGroup>.

如果从查询中省略了最终的.ToList(),则返回类型变为IQueryable< OrdersGroup>

无论接下来执行什么操作,结果都是此方法无法转换为商店表达式的异常.

我试图将特定的选择新OrdersGroup删除到更通用的select new中,然后对此结果执行操作,仅查找相同的商店表达式异常.

有人可以透露一下这个linq不正确的地方吗?

解决方法

这是失败的部分 – grp.Select(g => g.OrderId).ToList() – 你不能在select子句中有一个.ToList().删除它,你应该没事.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读