Вывод словаря в текстовое поле в С#

У меня есть словарь myDataItems, который содержит строку и двойное значение. Я передаю значения в словарь из 2 текстовых полей, 1 текстовое поле передает строковое значение, другое - двойное. Мне было интересно, как я могу отобразить элементы словаря в третьем текстовом поле (txtOutput), которое я использую для целей вывода?

public partial class Form1 : Form 
{
   private Dictionary<string, double> myDataItems = new Dictionary<string, double>();
   private string dataName;
   private double dataCost;

   private void dataItemSend_Click(object sender, EventArgs e)
   {
      dataName = dataNameInput.Text;
      dataCost = Convert.ToDouble(dataCostInput.Text);
      myDataItems.Add(dataName, dataCost);
      txtOutput.Text = myDataItems.ToString();
   }
}

person Scott    schedule 29.12.2012    source источник
comment
foreach(KeyValuePair‹строка, двойная› пара в myDataItems){}   -  person MethodMan    schedule 29.12.2012
comment
Я попробовал что-то похожее на решение codeparkle, и оно не работает. Я просто ищу пары, которые будут отображаться в текстовом поле, например: Вы выбрали ключ по цене   -  person Scott    schedule 29.12.2012
comment
Скотт, покажите код, который вы пробовали. вам нужно сделать это в цикле foreach, покажите нам пример, который вы пробовали, где вы говорите, что это не работает.. вставьте код в свой вопрос   -  person MethodMan    schedule 29.12.2012
comment
Есть ли способ просто выбрать двойника из каждой пары?   -  person Scott    schedule 29.12.2012


Ответы (1)


Простой подход:

var lines = myDataItems.Select(kv => kv.Key + ": " + kv.Value.ToString());
txtOutput.Text = string.Join(Environment.NewLine, lines);

Не забудьте добавить using System.Linq;

person Tim Schmelter    schedule 29.12.2012
comment
гораздо более приятное решение. Linq похож на Google. Это ваш друг .. :) - person MethodMan; 29.12.2012
comment
Кстати, ToString() вам не понадобится. - person Adam; 29.12.2012
comment
@codesparkle: я знаю, но это не повредит и показывает, что значение изначально не является строкой, и упрощает изменение форматирования двойного числа, например. kv.Value.ToString("N2"). - person Tim Schmelter; 29.12.2012
comment
Я думаю, мне нужно будет прочитать LINQ. Я новичок в этом. Спасибо за помощь, хотя, ребята :) - person Scott; 29.12.2012