float.Parse
- это , а не - это то же самое, что и кастинг. Вы должны иметь возможность на самом деле привести значение, например, один из
(float) row["Foo"]
(double) row["Foo"]
(decimal) row["Foo"]
в зависимости от типа. Это позволит избежать повторного анализа - вы просто распаковываете. Вам может понадобиться распаковать и cast, если значение не соответствует нужному вам типу, например
(float) (double) row["Foo"]
Непонятно, как именно вы используете DataTable
, но я бы предложил создать собственный класс модели, который представляет строку таблицы строго типизированным способом с преобразованиями в DataRow
или из него, или использовать строго типизированный DataSet
для начала. Таким образом, ваш код будет много яснее, и вам нужно будет выполнять преобразования только для небольшой части вашего кода.