Два варианта:
Если ваши данные это строка, то приведите ее как строку
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
, но программисту придется выполнить приведение типа обратно после его возвращения обратно. Другие альтернативы, такие как строго типизированные наборы данных, позволяют обойти эту проблему, более строго говоря о том, какие типы вы можете хранить в них, но тогда вам не нужно постоянно приводить объекты в заблуждение.