基本上,我试图询问用户产品的ID号,然后将带有该号码的元素复制到新的Collection中。
我在这里添加了产品。
//Set up shop and add products
public void SetUpShop()
{
products.Add(new Farm_Shop(1, "Apple", "Fruit\t", 0.49, 40, 'n'));
products.Add(new Farm_Shop(2, "Orange", "Fruit\t", 0.59, 35, 'n'));
}
然后,我显示一个菜单,允许用户输入他们想要的ID号,例如“1 for Apple”。我接下来要做的就是将“Apple”系列中的所有信息添加到新的Collection中。
//Display all items
public void DisplayAll()
{
Console.WriteLine("\nID\tProduct\tCategory\tPrice\tStock\tIn Basket?");
foreach (Farm_Shop temp in products)
{
//display each product to console by using Display method in Farm Shop class
temp.Display();
}
//Allow user to add a product to the basket (change 'inBasket' to 'y')
Console.WriteLine("Enter the ID of the item you wish to add to your basket: ");
int idToAdd = int.Parse(Console.ReadLine());
//Add array with the same as ID as person wants to add to basket to Basket array.
basket.Add //Trying to add element to the "basket" collection.
}
我显然可以在集合中添加元素,但事实上我必须获取ID号然后将其与所有数组中的whats进行比较,然后将带有该ID的数组添加到其中并将其添加到新系列。
帮助赞赏,因为我已经尝试了很多年了。而且我刚刚意识到,在我的解释中,我已经把自己混淆了在说数组和集合之间切换。
感谢。
答案 0 :(得分:0)
最好在你的情况下使用Dictionary。因此,正确元素的添加和定位将是微不足道的。
所以,这是初始化:
products = new Dictionary<int, Farm_Shop>
{
{ 1, new Farm_Shop(1, "Apple", "Fruit\t", 0.49, 40, 'n') },
{ 2, new Farm_Shop(2, "Orange", "Fruit\t", 0.59, 35, 'n') }
};
basket = new Dictionary<int, Farm_Shop>();
这是补充:
int idToAdd = int.Parse(Console.ReadLine());
Farm_Shop selected;
if (products.TryGet(idToAdd, out selected))
{
basket[idToAdd] = selected;
}
使用索引器(方括号)可确保在具有相同ID的项目已存在于字典中时不会出现异常。
希望我理解你的问题。
答案 1 :(得分:0)
Farm_Shop selectedItem = products.Single(x => x.ID == idToAdd);
selectedItem.InBasket = 'y';
basket.Add(selectedItem);
如果您想要更有效的查找,您应该使products
字典将ID映射到项目。然后第一行将成为:
Farm_Shop selectedItem = products[idToAdd];