Не могу обернуться, используя словарь со встроенным списком, таким как словарь <строка, список <string>> - PullRequest
0 голосов
/ 02 мая 2019

пытаясь добавить объект списка в словарь, я не могу понять, что у вас есть ключ, поэтому вы не можете сделать .add без нарушения ключа

работая над программой списка покупок, мне нужно добавить инвентарь в корзину покупателя, удалить его из инвентаря, а затем добавить его в словарь.

    public static Inventory AddToCart(List<Inventory> Inventory)
    {
        // this method moves a dvd from inventory to the shopping cart.
        int i = 0;
        int iInput = 0;
        Inventory newCart = null;
        if (Inventory.Count > 0)
        {

            foreach (Inventory obj in Inventory)
            {
                ++i;
                Console.WriteLine("[" + i + "] " + obj.ToString());
            }
            iInput = Validation.GetInt("Please Choose an item to add to cart: ");
            Console.Write($"Move item at record: #{iInput - 1} to shopping cart: (y or n)");
            string sInput = Console.ReadLine();
            if (string.IsNullOrEmpty(sInput))
            {
                Console.WriteLine("\r\nNo Valid number was chosen: ");
            }
            else
                switch (sInput.ToLower())
                {
                    case "y":
                        {
                            newCart = Inventory[iInput - 1];
                            Inventory.RemoveAt(iInput - 1);
                        }
                        break;
                    case "n":
                    case null:
                    case "":
                        {
                            Console.WriteLine("\r\nNo Valid number was chosen: ");
                        }
                        break;
                    default:
                        {
                            Console.WriteLine("Keeping item in Inventory");
                        }
                        break;
                }
        }
        else
        {
            Console.WriteLine("\nNo records were found in the Shopping Cart");
        }
        return newCart;
    }

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

Ответы [ 2 ]

0 голосов
/ 02 мая 2019

Я не уверен, что понял ваш вопрос, но вот некоторые пояснения о том, как работать со словарями, которые содержат списки в целом.

У вас есть словарь, который состоит из ключа и списка.

Dictionary<string, List<int>> dictionaryWithList = new Dictionary<string, List<int>>();

Если вы хотите что-то сохранить в этом списке, сначала нужно создать пару ключ-значение. Это означает добавление в словарь элемента, содержащего ключ и список. Если вы хотите, чтобы ваш список был заполнен при добавлении пары ключ-значение, вы можете сделать что-то вроде этого:

List<int> myList = new List<int>();
myList.Add(5);
myList.Add(6);
myList.Add(7);
dictionaryWithList.Add("test", myList);

Теперь у вас есть список, содержащий 5, 6 и 7, к которому вы можете получить доступ с помощью клавиши «test» внутри словаря.

Если вы хотите получить доступ к списку, который вы просто используете:

dictionaryWithList["test"]

Так что, если вы хотите добавить в список новый номер с ключом «test», вы можете использовать:

dictionaryWithList["test"].Add(42)

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

if(dictionaryWithList.ContainsKey("test"))

Сообщите мне, если это не помогло вам с дополнительной информацией о вашей проблеме:)

0 голосов
/ 02 мая 2019
    string newKey = "NEW KEY";
    string firstListElement = "FIRST";
    Dictionary<string, List<string>> dict = new Dictionary<string, List<string>>();
    if (dict.ContainsKey(newKey)) { 
        // you need to throw an exception or return some signal to exit function
    }
    dict.Add(newKey, new List<string>());
    dict[newKey].Add(firstListElement);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...