0

假设我有一个Customer实体和一个Sales实体,是一对多的关系。我怎样才能获得最近销售 N 次的所有客户?

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

这将返回所有客户的所有销售额。如果我只想从每个客户那里获得 2 条销售记录怎么办?

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

var result = from cust in context.Customers
             select new
             {
                 Customers = cust,
                 Sales = cust.Sales.OrderBy(s => s.Date).Take(2)
             };

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

编辑:好的,事实证明我在这里包含的查询语法也不起作用。只有Sales匿名类型中的 有效减少到 2 条记录。

var filtered = result.AsEnumerable().Select(r => r.Customers);

这样做仍然会产生一个包含所有销售额的客户列表

4

1 回答 1

1

您可以按照此处所述进行项目

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);
于 2012-05-03T17:00:54.977 回答