Профил
Loading...
+ Нов въпрос
MihailNMihaylov avatar MihailNMihaylov 0 Точки

OrderBy(); азбучен ред

Здравейте имам домашно в което в един от случайте на if-а трябва да подреда речник по азбучен ред

 if (text[0] == "ListAll")
                {
                    phoneBook.OrderBy(x => x);
                    foreach (var phone in phoneBook)
                    {
                        Console.WriteLine($"{phone.Key} -> {phone.Value}");
                    }
                }

 

грешката ми е при командата

phoneBook.OrderBy(x => x);

но не знам къде е и каква е.

0
Fundamentals Module
StefkaVasileva avatar StefkaVasileva 250 Точки

Трябва да посочиш дали ще сортираш по ключ или стойност. В твоя случай типа данни на x ще ти е равен на KeyValuePair. Дава ти грешка защото във функцията няма как да сортираш този тип данни. Опитай OrderBy(x => x.Keys); или Values, в зависимост от целите.

0
MihailNMihaylov avatar MihailNMihaylov 0 Точки

Подчертава ми Keys като грешка. Ето го целия код, задачата е в последния If -   if (phoneBook.ContainsKey(text[1])) да ми ги подреди по азбучен ред ама нещо не става.

 

 

namespace dectionary
{
    using System;
    using System.Collections.Generic;
    using System.Linq;

    public class Program
    {
        public static void Main()
        {
            var text = Console.ReadLine()
                .Split(' ')
                .ToArray();

            var phoneBook = new Dictionary<string, string>();

            while (text[0] != "END")
            {
                if (text[0] == "A")
                {
                    phoneBook[text[1]] = text[2];
                }

                if (text[0] == "S")
                {

                    if (phoneBook.ContainsKey(text[1]))
                    {
                        Console.WriteLine($"{text[1]} -> {phoneBook[text[1]]}");
                    }
                    else
                    {
                        
                        Console.WriteLine($"Contact {text[1]} does not exist.");
                        
                    }
                    
                }

                if (text[0] == "ListAll")
                {
                    phoneBook.OrderBy(x => x.Keys);
                    foreach (var phone in phoneBook)
                    {
                        Console.WriteLine($"{phone.Key} -> {phone.Value}");
                    }
                }

                  text = Console.ReadLine()
                                .Split(' ')
                                 .ToArray();
            }


        }
    }
}
 

0
Wencii avatar Wencii 90 Точки

phoneBook = phoneBook.OrderBy(x => x.Keys); 

Трябва да присвоиш резултата от сортировката някъде.

1
StefkaVasileva avatar StefkaVasileva 250 Точки

Колегата е прав трябва и да запишеш резултата от сортирането. За да ти е по-лесно когато задържиш мишката върху името на метода можеш да видиш какви параметри изисква и съответно какъв е типа на връщаната му стойност. Ако е void не трябва да записваш резултата.

0
Iliev88 avatar Iliev88 39 Точки

Ползвай направо SortedDictionary и си свиркай. :)

0
MihailNMihaylov avatar MihailNMihaylov 0 Точки

Стана много Ви благодаря !

0