Как преобразовать тип данных из DataColumn?
У меня есть следующий код и хочу узнать, как заставить строку DataColumn [col] плавать?
queryString = "SELECT Price FROM sampledata";
SqlCommand cmd = new SqlCommand(queryString, connection);
SqlDataAdapter sda = new SqlDataAdapter(cmd);
DataTable dt = new DataTable("SampleTable");
sda.Fill(dt);
foreach (DataRow row in dt.Rows)
{
// this value should become float pPrice = 0;
string pPrice = "";
foreach (DataColumn col in dt.Columns)
{
if (col.ToString().Trim() == "Price")
{
// pPrice = float.Parse(row[col].ToString()) does not work
// table column from sampledata is float
pPrice = row[col].ToString();
}
}
}
3 ответа
Решение
Попробуй вместо
pPrice = row[col].ToString();
этот
float value = (float)row[col];
Вы явно устанавливаете свое значение в строку, поэтому вы не можете присвоить ей значение с плавающей точкой.
Кроме того, будьте уверены, что столбец - это число с плавающей запятой, а не двойное / десятичное.
Type t = row[col].GetType();
string typeName = t.Name;
Если вы хотите получить / извлечь список столбцов с плавающей запятой из таблицы данных, вам нужно пройти цикл каждого столбца таблицы данных и проверить приведенный ниже код.
if (dt.Columns [0].GetType () == float) {
}
Convert.ToSingle()
можно использовать для конвертации в float.
float pPrice = Convert.ToSingle(row[col]);
Или же
float pPrice = Single.Parse(row[col].ToString());