我在使用此代码时遇到了困难,我正试图从数据集中的数据中进行一段时间的转换。
我正在尝试检查是否可以转换数据集中该位置内的值。如果它不起作用,则表示数据集中没有项目,因为所有其他参赛者(从txtfile中获取)都是有效的
代码:
long Recid = 0;
Boolean checkrecid = long.TryParse(dts.Tables[0].Rows[0]["RECID"], out Recid)
错误:
The best overloaded method match for 'long.TryParse(string, out long)' has some invalid arguments and
Argument 1: cannot convert from 'object' to 'string'
提前致谢。
答案 0 :(得分:8)
两个选项:
如果您的数据 是 一个字符串,那么将其转换为字符串
long Recid = 0;
Boolean checkrecid = long.TryParse((string)dts.Tables[0].Rows[0]["RECID"], out Recid)
否则,请致电.ToString()
long Recid = 0;
Boolean checkrecid = long.TryParse(dts.Tables[0].Rows[0]["RECID"].ToString(), out Recid)
您需要执行此操作的原因是因为long.TryParse()
方法仅接受string
的实例作为其第一个参数http://msdn.microsoft.com/en-us/library/zc2x2b1h.aspx
来自数据集的数据输入为object
,因此Int64.TryParse()
方法无法确定它是否为字符串且失败。 (一般来说,编程不允许歧义,这就是为什么TryParse方法不会尝试为你转换它 - 你必须明确你想要什么以及你提供什么。)
数据集非常灵活,因为您可以在其中存储任何object
,但更多的工作是让程序员在再次将其返回后再将其转换回来。其他替代方案,如强类型数据集,通过更加严格地确定可以存储在其中的类型来解决该问题,但是您不必一直保持铸造。
答案 1 :(得分:0)
将对象(dts.Tables[0].Rows[0]["RECID"])
转换为字符串。而已。
dts.Tables[0].Rows[0]["RECID"].ToString()