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

时间:2015-01-16 11:19:26

标签: linq entity-framework-6

我正试图找到一种方法,只在实体框架6中获得1对多关系中的最后2条记录。 我有3个模型对象。 产品,价格和库存。 产品有一个价格和库存对象列表。 我需要最后一条记录来显示当前的价格和库存,以及第二条记录来比较价格差异。

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

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

但这会引发运行时错误。

1 个答案:

答案 0 :(得分:0)

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

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();
相关问题