0

基本的に、ユーザーに製品の ID 番号を尋ね、その番号を持つ要素を新しいコレクションにコピーしようとしています。

ここに商品を追加しました。

    //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 番号を入力できるメニューを表示します (たとえば、「Apple の場合は 1」)。次に、「Apple」コレクションのすべての情報を新しいコレクションに追加しようとしています。

//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 番号を取得し、それをすべての配列の内容と比較し、その ID を含む配列を取得して新しいコレクションに追加する必要があるという事実があります。 .

私はこれを長年試してきたので、助けていただければ幸いです。そして、説明の中で配列とコレクションの言い方を切り替えるのに混乱していたことに気付きました。

ありがとう。

4

2 に答える 2

0
Farm_Shop selectedItem = products.Single(x => x.ID == idToAdd);
selectedItem.InBasket = 'y';
basket.Add(selectedItem);

より効率的なルックアップが必要な場合はproducts、ID を項目にマップする辞書を作成する必要があります。次に、この最初の行は次のようになります。

Farm_Shop selectedItem = products[idToAdd];
于 2013-10-28T14:04:49.687 に答える