我正在尝试使用 LINQ to SQL 对从 WCF 服务返回的结果集中的一行求和。我可以将 LINQ 用于基本选择、排序、过滤等。到目前为止一切都很好。
但是,当我尝试 Group By / Sum 时,我在尝试从下面的查询中获取(5)时收到错误消息“值不能为空”。(results
是非空的并且有 1000+s 的项目,但是query
当我们尝试返回它时它是空的:)
编辑:我已经删除了下面答案中提到的无效演员表,而是将聚合结果选择到按订单编写的自定义类中。现在页面运行没有错误——但是 group by / sum 不起作用....我只得到结果中的前五个最高值,而不是按组求和。为什么?
var query = (from h in results
group h by h.Order into hh
select new TopOrders()
{
Order = hh.Key,
Total= hh.Sum(r => r.Price)
}).OrderByDescending(i => i.Total);
return query.Take(5).ToList();
我可以指出的唯一可能的皱纹是 Order 本身就是一个集合(OrderID、OrderName 等),所以我尝试在 hh.Key.Order.OrderID 等上明确分组,但没有效果。
你能看到我遗漏了什么吗?谢谢。