字典中编号的菜单<>

时间:2017-07-27 19:13:14

标签: c# dictionary

我想弄清楚Console.WriteLine如何编号的字典。

CollectionManager shoppers =
     new CollectionManager
     {
         Carts = new List<Inventory>(),
         Dictionary = new Dictionary<string, List<Inventory>>()
     };

我试过的方法:

public static void DisplayShoppers(CollectionManager shoppers)
{          
     List<string> temp =new List<string>();
     temp = shoppers.Dictionary.Keys.ToList();
     for (int i = 0; i < temp.Count; i++)
     {
         Console.WriteLine((i + 1) + ". Name: " + temp[i]);
     }

     Console.WriteLine("Pick a card to Shopper: ");
     int index = int.Parse(Console.ReadLine());
     if (index > temp.Count || index < 1)
     {
         return ;
     }

     temp.RemoveAt(index - 1);
}

有点有用吗?但它只打印字典中每个条目的第一个字母。

switch (choice)
{
    case 1:
        Customers temp = CreateCustomers();
        shoppers.Dictionary.Add(temp.ToString(), new List<Inventory>());
        break;
    case 2:
        DisplayShoppers(shoppers);
        break;
}

//method for creating customer 
static Customers CreateCustomers()
{
    Console.WriteLine("Create a Customer.");
    string name = Console.ReadLine();
    return new Customers {Name = name};
}

1 个答案:

答案 0 :(得分:0)

在控制台中显示完整的客户名称时,代码似乎是正确的。

根据评论中的对话,如果您想从Shoppers集合中删除选定的Customer,您可以更改该行:

temp.RemoveAt (index-1);

shoppers.Dictionary.Remove(shoppers.Dictionary.ElementAt (index-1).Key);

但是,此解决方案需要在Dictionary中进行额外搜索才能找到要删除的项目的关键字。考虑保持项目索引与项目本身之间的映射,或者只是将字典更改为List<Customer>