【发布时间】:2012-01-04 20:13:07
【问题描述】:
@gfrizzle 指出here LINQ to SQL 在给定 LINQ 时会为每个计数操作生成独立的 SELECT 语句:
From d in db
Group d.a.AuditStatus By d.a.DateCreated Into Group
Select _
DateIssued = DateCreated, _
TotalAudits = Group.Count(), _
TotalCancelled = Group.Count(Function(x) If(x = "Cancelled", True, False)), _
TotalComplete = Group.Count(Function(x) If(x = "Complete", True, False)), _
TotalIssued = Group.Count(Function(x) If(x = "Issued", True, False)), _
TotalPending = Group.Count(Function(x) If (x = "Pending", True, False)), _
Remaining = 0
随着相关数据变得足够大,这很容易导致巨大的性能损失。我知道我可以将其重写为本机 SQL 查询,但我在其他地方使用了 LINQ 的几个功能(比如打破我的 where 子句的能力),如果我可以避免它,我不想放弃它。还有其他解决方法吗?
【问题讨论】: