Ошибка Long.Tryparse Overload & Convert C # - PullRequest
1 голос
/ 01 марта 2012

У меня проблемы с этим кодом, когда я пытаюсь поместить определенное преобразование на длительное время из данных из набора данных.

Я пытаюсь проверить, возможно ли преобразовать значение внутриэта позиция в наборе данных.Если это не работает, это означает, что в наборе данных нет элементов, потому что все остальные участники (прочитанные из 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'    

Заранее спасибо.

Ответы [ 2 ]

8 голосов
/ 01 марта 2012

Два варианта:

Если ваши данные это строка, то приведите ее как строку

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

0 голосов
/ 13 февраля 2013

Преобразовать объект (dts.Tables[0].Rows[0]["RECID"]) в строку.Вот и все.

dts.Tables[0].Rows[0]["RECID"].ToString()
...