2016-08-23 4 views
2

В моем приложении я запрашиваю базу данных и хотел бы применить string.Format("{0:n}") к моим результатам, чтобы результаты были запятыми и десятичными знаками.Как применить string.Format к SQL-результатам?

Однако у меня возникли проблемы с его правильной работой. Код компилируется, и все работает нормально, но цифры не отформатированы, как я их хочу.

Вот мой текущий код:

using (CacheConnection myConnection = new CacheConnection()) 
{ 
    myConnection.ConnectionTimeout = 9999; 
    myConnection.ConnectionString = monthPropStruct.connectionString; 
    myConnection.Open(); 

    using (CacheCommand myCommand = new CacheCommand(sqlTest, myConnection)) 
    { 
     myCommand.CommandTimeout = 9999; 
     using (CacheDataReader myReader = myCommand.ExecuteReader()) 
     { 
      while (myReader.Read()) 
      { 
       myWriter = new StreamWriter(myParameters.fullSaveDirectory, true); 
       myWriter.WriteLine("Amount: $" + string.Format("{0:n}", myReader[myReader.GetOrdinal("total_amt")])); 
       myWriter.Close(); 
      } 
     } 
    } 
} 

Текущий результат я получаю «245687» или любой другой, но я хотел бы его показать, как 245,678.00

+1

преобразуйте ваше значение в десятичный. –

+0

@ Ракитич, да, это именно то, что мне нужно было сделать. Благодаря! –

+0

вы также можете использовать 'string.Format (" {0: C} "' и удалить '$' из строки '' Amount: $ "', так как ** $ ** будет добавляться автоматически. –

ответ

2

Строка форматирования будет работать для числового значения, тогда как ваш код myReader[myReader.GetOrdinal("total_amt")]) вернет объект. Преобразование значения в числовые, а затем применить форматирование, как:

Convert.ToDecimal((myReader[myReader.GetOrdinal("total_amt")])) 

или используйте:

pReader.GetDecimal(pReader.GetOrdinal("total_amt")) 

(я полагаю, у вас есть Decimal типа за деньги, в любом случае он должен быть один, используемый для денег .)

+0

AHHHHHHHHHHHHHH. Я чувствую себя глупым. Большое спасибо! –

Смежные вопросы