sql – Sequence不包含任何元素 – LINQ,MVC,Average
发布时间:2020-05-24 17:48:19 所属栏目:MsSql 来源:互联网
导读:我遇到了这个错误.我看到原因是因为从数据的角度来看,有时返回的平均值是0.00.这个SQL查询工作正常,但这是因为它自动输入0.00. LINQ抱怨,所以我尝试使用DefaultIfEmpty(),但它说它期待我的ViewModel. Dim ticketCounts = From t In queue _ Where _ (t.Status
|
我遇到了这个错误.我看到原因是因为从数据的角度来看,有时返回的平均值是0.00.这个SQL查询工作正常,但这是因为它自动输入0.00. LINQ抱怨,所以我尝试使用DefaultIfEmpty(),但它说它期待我的ViewModel. Dim ticketCounts = From t In queue _
Where _
(t.StatusId = 2) And _
(t.CloseDate.Year = Convert.ToDateTime(DateTime.Now).Year) And _
(t.ResolutionDays > 0)
Group t By _
Column1 = CType(t.CloseDate.Month,Integer),_
Column2 = CType(t.CloseDate.ToString("MMMM"),String) _
Into g = Group _
Order By Column1 _
Select _
Id = Column1,_
Month = Column2,_
Critical = g.Where(Function(t) t.PriorityId = 1).DefaultIfEmpty().Average(Function(t) t.ResolutionDays),_
High = g.Where(Function(t) t.PriorityId = 2).DefaultIfEmpty().Average(Function(t) t.ResolutionDays),_
Normal = g.Where(Function(t) t.PriorityId = 3).DefaultIfEmpty().Average(Function(t) t.ResolutionDays),_
Low = g.Where(Function(t) t.PriorityId = 4).DefaultIfEmpty().Average(Function(t) t.ResolutionDays),_
Total = g.Where(Function(t) t.Id <> Nothing).DefaultIfEmpty().Average(Function(t) t.ResolutionDays)
更新! SELECT
DATENAME(MONTH,t.CloseDate) AS 'Month',AVG(CASE WHEN (t.PriorityId = 1) THEN CAST(t.ResolutionDays AS Decimal(18,2)) ELSE 0 END) AS 'Critical',AVG(CASE WHEN (t.PriorityId = 2) THEN CAST(t.ResolutionDays AS Decimal(18,2)) ELSE 0 END) AS 'High',AVG(CASE WHEN (t.PriorityId = 3) THEN CAST(t.ResolutionDays AS Decimal(18,2)) ELSE 0 END) AS 'Normal',AVG(CASE WHEN (t.PriorityId = 4) THEN CAST(t.ResolutionDays AS Decimal(18,2)) ELSE 0 END) AS 'Low',AVG(CAST(t.ResolutionDays AS Decimal(18,2))) AS 'Monthly Average'
FROM
tblMaintenanceTicket t
WHERE
t.StatusId = 2
AND YEAR(t.CloseDate) = year(getdate())
GROUP BY
MONTH(t.CloseDate),DATENAME(MONTH,t.CloseDate)
ORDER BY
MONTH(t.CloseDate)
解决方法问题是如果输入IEnumerable(Of T)没有任何元素,所有标量LINQ方法(Average,Max等等)都会抛出异常.它看起来像g.Where调用导致一个空集合导致异常.您可能想要做的是编写一个处理空案例并返回默认值的方法. (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
