gpt4 book ai didi

asp.net - 无法隐式转换类型 'System.Data.Linq.ISingleResult to ' int'

转载 作者:行者123 更新时间:2023-12-01 08:40:24 39 4
gpt4 key购买 nike

对不起这个简单的问题。

我有一个返回 int 值的存储过程,我试图从我的 asp.net linq 调用这个 sp 到 sql 项目。

int currentRating = db.sproc_GetAverageByPageId(pageId);

但我得到这个错误:
Cannot implicitly convert type `'System.Data.Linq.ISingleResult<PsychoDataLayer.sproc_GetAverageByPageId> to 'int' .`

编辑 1
friend 暗示的解决方案没有奏效。它总是返回 0
有关更多信息,我将存储过程放在这里:
ALTER procedure [dbo].[sproc_GetAverageByPageId](
@PageId int )
as
select (select sum(score) from votes where pageId = @PageId)/(select count(*) from votes where pageId=@PageId)

最佳答案

您应该检查 the ReturnValue property .

也许以下效果更好?

int currentRating = (int)db.sproc_GetAverageByPageId(pageId).ReturnValue;

更新:因为您的存储过程返回一个结果集而不是使用 return声明实际数据将作为 db.sproc_GetAverageByPageId(pageId) 返回的枚举中的一个元素提供.如果您检查 the ISingleResult<T> type , 你会看到它继承了 IEnumerable<T>这表明您可以枚举对象以获取数据,每个元素的类型为 T .

由于存储过程执行 SELECT SUM(*) ...我们可以指望结果集总是包含一行。因此,以下代码将为您提供集合中的第一个(也是唯一一个)元素:
var sumRow = db.sproc_GetAverageByPageId(pageId).Single();

现在, sumRow 的类型将是 T来自接口(interface)定义,在您的情况下是 PsychoDataLayer.sproc_GetAverageByPageId .这种类型希望包含一个包含您所追求的实际值的属性。

也许您可以与我们分享 PsychoDataLayer.sproc_GetAverageByPageId 的布局类型?

关于asp.net - 无法隐式转换类型 'System.Data.Linq.ISingleResult<CustomeProcedureName> to ' int',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3952728/

39 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com