尝试在LINQ-TO-SQL中创建以下查询。
我想到了下面的LINQ查询:
select count(*), sum( o.CostInCents ) from Orders o
where Flag = true;
我想到了下面的LINQ查询:
var q = db.Orders
.Where(o => o.Flag )
var result = q
.GroupBy(o => 1)
.Select(g => new MyDTO
{
NoOfOrders = g.Count(),
TotalInCents = g.Sum(o => o.CostInCents )
})
.SingleOrDefaultAsync();
有更好的方法吗?
.GroupBy(o => 1)
是正确的吗?
另一种选择是执行两个查询,如下所示。
var q = db.Orders
.Where(o => o.Flag );
//No groupBy
var result2 = new MyDTO
{
NoOfCostedOrders = q.Count(),//hit the db
TotalInCents = q.Sum(o => o.CostInCents )//hit the db 2nd time
};
我该如何判断哪种方法更好?
提前感谢!