我有一个请求,它带有一个带有参数列表的存储过程名称。它可以是任何SP,因此结果可能是任何内容的列表,这就是我使用SqlList<object>
的原因。
当我使用
时return db.SqlList<object>(spName, cmd =>
{
cmd.CommandType = CommandType.StoredProcedure;
if (parameters != null)
{
foreach (var p in parameters)
{
cmd.AddParam(p.Key, p.Value, ParameterDirection.Input);
}
}
cmd.CommandTimeout = 90;
});
我得到一个system.dynamic.expendo对象:{[result,1.7783336]} 在客户端,我想获得小数值,但我很难... 我在客户端上创建了一个具有十进制属性“result”的类,并尝试转换为它但它不起作用。我尝试使用该字符串并使用FromJson转换它,它也不起作用......
答案 0 :(得分:1)
请参阅calling stored procedures with OrmLite推荐API的文档。
返回类型需要与存储过程返回的内容相匹配,如果SP只返回一个小数,您应该能够访问它:
var result = db.SqlScalar<decimal>("EXEC MyProc @p1 @p2", new { p1, p2 });
或者,如果您不知道它将返回什么类型,因为您可以使用object
,例如:
var result = db.SqlScalar<object>("EXEC MyProc @p1 @p2", new { p1, p2 });
如果它没有返回裸标量结果,则需要匹配返回类型的形状,例如:如果它返回单行,您可以使用:
访问List<object>
中的行值
var result = db.Single<List<object>>("EXEC MyProc @p1 @p2", new { p1, p2 });