我需要执行一个自定义的SQL查询,我无法用常规的L2S进行操作:
select [row_number] from (select row_number() over (order by CreatedOn desc, ID desc) as [row_number], ID from MyTable) as T1 where ID = {0}
所以我正在尝试
var r = db.ExecuteQuery<int>(q, id).Single();
但这不起作用(获取System.InvalidCastException:指定的强制转换无效)。有什么建议吗?
答案 0 :(得分:7)
将您的代码更改为:
var r = db.ExecuteQuery<long>(q, id).Single();
将返回类型从System.Int32
(int
)更改为System.Int64
(long
)。
T-SQL函数ROW_NUMBER
返回类型为bigint
,而不是您预期的int
。
答案 1 :(得分:0)
您可以尝试从
更改代码int recordsAffected = SqlDBUtils.GetInt(dr, "SerialNumber");
到
int recordsAffected = SqlDBUtils.GetInt64(dr, "SerialNumber");
因为SQL中的ROW_NUMBER()
函数返回BigInt
而不是Int