2015-03-12 4 views
0

Итак, я хотел бы попросить совета людей о том, как улучшить код, нет проблем с этим, я чувствую странное появление на этом сайте, не имея проблем с кодом.Передача жестко закодированных данных в массивы

В настоящее время мой код не имеет сложностей, это жесткий код по определению, я хочу знать, есть ли способы уменьшить жесткий код, передав данные в массивы или циклы.

У меня есть мой код здесь, я думаю, что достаточно небольшого фрагмента.

MySqlDataAdapter dAdapter = new MySqlDataAdapter(pQuery, Connection); 
      dAdapter.Fill(dTable); 
      dAdapter.Dispose(); 
      int One, Two, Three; 
      One = Convert.ToInt32(dTable.Rows[0]["Cost"].ToString()); 
      Two = Convert.ToInt32(dTable.Rows[1]["Cost"].ToString()); 
      Three = Convert.ToInt32(dTable.Rows[2]["Cost"].ToString()); 

Конечно, игнорируйте pQuery и Connection. Я чувствую, что я беру «длинный путь», тогда как я уверен, что есть более чистый способ сделать это.

Любые предложения?

+0

http://codereview.stackexchange.com/ за то, что вы просите, но почему бы не сделать класс для данных, я имею в виду, вы получение стоимости чего-то права, сделать класс для чего-то с его пространством затрат. – Prix

ответ

1

Конечно, вы можете использовать список и цикл вроде этого:

var costs = new List<int>(); 
foreach (DataRow row in dTable.Rows) { 
    costs.Add(Convert.ToInt32(row["Cost"].ToString()); 
} 

Также обратите внимание, что вы можете использовать using блок вместо явного вызова Dispose:

using (var dAdapter = new MySqlDataAdapter(pQuery, Connection)) { 
    dAdapter.Fill(dTable); 
} 
1

Кроме того, вы могли бы сделайте это в одной строке с LINQ. Не то, что одна линия лучше, просто другой способ:

List<int> costs = (dTable.Rows 
    .Cast<DataRow>() 
    .Select(row => int.Parse(row["Cost"].ToString()))) 
    .ToList(); 
Смежные вопросы