实体框架 linq include() 一对多中的最后 2 条记录

Entity framwork linq include() last 2 records in 1 to many

我正在尝试找到一种方法来仅获取 entity framework 6 中一对多关系中的最后 2 条记录。 我有 3 个模型对象。 产品、价格和库存。 产品具有价格和库存对象列表。 我需要最后一条记录来显示当前价格和库存,倒数第二条记录来比较价格差异。

基本上我正在尝试找到一种方法来做到这一点:

var products = ProductManager.Instance.SelectAll(db) .Include(a => a.ProductPrices.Reverse().Take(2)) .Include(a => a.ProductStock.Last());

但这会引发运行时错误。

我可以建议这个解决方案:

var products = (from pm in ee.ProductManager

                        join pp in ee.ProductPrices on pm.ProductID equals pp.ProductID into temppp
                        from ppp in temppp.OrderByDescending(c => c.ProductID).Take(2)

                        join ps in ee.ProductStock on pm.ProductID equals ps.ProductID into tempps
                        from pps in tempps.OrderByDescending(c => c.ProductID).Take(1)

                        select new { pm, ppp, pps }
                            ).ToList();