EF不能对包含聚合或字查询的表达式执行聚合函数报错,请问 该怎么改?


 var rentals2 = rentals
                .GroupBy(q => new { q.RRealassetName, q.RDateTime }) 
                .Select(q => new Rental
                {
                    RRealassetName = q.Key.RRealassetName,
                    RDateTime = q.Key.RDateTime,
                    DNum=q.Sum(x=>x.DNum),
                    RNum=q.Sum(x=>x.RNum),
                    DRNum = q.Sum(x=>x.DNum-x.RNum),
                    //DRNum = q.Sum(x=> q.Sum(x => x.DNum) - q.Sum(x => x.RNum))
                }
            );

img

图中的红色圈住数字应该是18-9=9 而不是0-9=-9,应该是该产品的租用数量-退还数量的累计值,可是我改为注释的 DRNum = q.Sum(x=> q.Sum(x => x.DNum) - q.Sum(x => x.RNum)) 写法的时候,系统就提示不能对包含聚合或字查询的表达式执行聚合函数报错,请问应该怎么改写这个lanmda语句,谢谢。

因为只是针对当前日期+设备就行聚合,要参考所有租用数量,可以先读出数据后,用程序处理一遍累加对应的数量,并不一定需要linq to sql全部由数据库来负责计算,这样操作起来简单些

把SQL语句打印出来看看,语句是否准确。

DRNum = q.Sum(x=> q.Sum(x => x.DNum) - q.Sum(x => x.RNum)) 就是这句错误,无法包含聚合或字查询的表达式执行聚合函数

一个linq 无法实现,需要再写个linq...不知道该怎么写