我创建了这样的存储过程:
SELECT
ISNULL(SUM(p.Amount), 0.00)
FROM
Payments p
LEFT JOIN
TenantTenancies tt ON tt.TenancyId = p.TenancyId
INNER JOIN
Tenant t ON t.Id = tt.TenantId
WHERE
t.UserId = @UserId
AND p.IsTenant = 1
AND p.Date < @StartDate
我希望它在ASP.NET MVC中做的是返回a decimal
,但是它一直在返回an INT
,如何使它返回a decimal
?是SQL还是ASP.NET MVC方面的问题?
我知道我可以使用标量decimal
,但是这会将其转换为a,ObjectResult(Decimal)
我希望它返回adecimal
或decimal?
。如果我单击返回一个NONE的集合,则默认情况是转到,int
但它在页面上正常运行而没有问题,只是我希望它返回正确的值(例如24.45)。
我该如何实现?
那么,问题是:怎么可能EF知道,你只返回一个单一的 decimal
?存储过程返回结果集-可能是任意数量的行,任意数量的列。
所以这就是为什么您得到一个ObjectResult<decimal?>
。如果您知道它将只包含一个带有一个小数的行-只需使用.SingleOrDefault
,并且如果返回的不是null,则得到以下结果:
ObjectResult<decimal?> results = ctx.GetDecimal();
if (result != null)
{
decimal? theResult = result.SingleOrDefault();
if(theResult != null)
{
decimal resultValue = theResult.Value;
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句