实体框架获取N个子集合项

时间:2012-05-03 16:40:52

标签: linq entity-framework

假设我有一个Customer实体和一个{1}实体,具有1对多的关系。 我如何才能让所有客户拥有N个最近的销售额?

Sales

这将使所有客户获得所有销售。 如果我只想要每个客户的2个销售记录怎么办?

P / S:我可以用查询语法做到这一点,我正在寻找方法语法解决方案。我只是无法弄清楚如何将它们以方法语法形式链接在一起

var result = Customers.Where(c => c.Sales.Any());

这样可行,但我不确定这是否是最好的方法。

编辑: 好吧,事实证明我在这里包含的查询语法也不起作用。 只有匿名类型中的var result = from cust in context.Customers select new { Customers = cust, Sales = cust.Sales.OrderBy(s => s.Date).Take(2) }; 才能有效地减少为2条记录。

Sales

执行此操作仍会导致客户列表中包含所有销售

1 个答案:

答案 0 :(得分:1)

您可以按照here

中的说明执行项目
var dbquery = Customers.Select( c => new { 
                        Customer = c,
                        Sales = c.Sales.OrderBy(s => s.Date)
                             .Take(2).Select( s => new { s, s.SalesDetails})
                  });

var customers = dbquery 
   .AsEnumerable() 
   .Select(c => c.Customer);