Как отсортировать этот словарь по ключу - PullRequest
0 голосов
/ 20 декабря 2018

Я хочу отсортировать этот словарь по клавишам, когда нажимаю на кнопку.Вот как это должно выглядеть: https://gyazo.com/2f03244e94627153e8f7cb3fef4862d5

Пытался как-то сделать это с помощью пузырьковой сортировки, но не смог разобраться.

public partial class MainWindow : Window
{
    Dictionary<int, string> dict = new Dictionary<int, string>();
    public MainWindow()
    {
        InitializeComponent();
    }

    private void btn_add_Click(object sender, RoutedEventArgs e)
    {

        //Dictionary<int, string> dict = new Dictionary<int, string>();
        dict.Clear();

        //int asd = Convert.ToInt32(txt1.Text);
        string asd = Convert.ToString(txt2.Text);

        dict.Add(Convert.ToInt32(txt1.Text), asd);

        string lol = "";

        foreach (var pair in dict)
        {
            lol += pair.Key + "-" + pair.Value;
        }

        list.Items.Add(lol);
    }

    private void btn_sort_Click(object sender, RoutedEventArgs e)
    {
        int asd = dict.ElementAt(1).Key;

         for (int i = 1; i < dict.Count; i++)
         {
             for (int j = i + 1; j < dict.Count; j++)
             {
                 if (dict.ElementAt(i).Key > dict.ElementAt(j).Key)
                 {


                     asd = dict.ElementAt(i).Key;

                     dict.ElementAt(i).Key = dict.ElementAt(j).Key;

                     dict.ElementAt(j).Key = asd;
                 }
             }
         }
   }

Ответы [ 2 ]

0 голосов
/ 20 декабря 2018

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

0 голосов
/ 20 декабря 2018

Если вы просто хотите распечатать содержимое неупорядоченного словаря по порядку по ключу, то сортируйте словарь, используя OrderBy

public void PrintSortedDictionary(Dictionary<int, string> dictionary)
{
    dictionary.OrderBy(kvp => kvp.Key).ToList().ForEach(kvp => Console.WriteLine($"Key: {kvp.Key} - Value: {kvp.Value}"));
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...