Как преобразовать тип данных из 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.

Ссылка MSDN 1

Ссылка MSDN 2

float pPrice = Convert.ToSingle(row[col]);

Или же

float pPrice = Single.Parse(row[col].ToString());
Другие вопросы по тегам