2017-02-24 92 views
3

問題是,我想要實現這樣的結構的列表:如何添加對象包含另一個列表

類別>子類別>產品

的情況會是怎樣,多個產品將是添加到子類別中,並將多個子類別添加到類別中。我的知識非常少,所以我的問題是我們可以這樣做,如果是的話,請幫助我實現這一目標。

這裏是我的代碼:

Category obj = new Category(); 
      obj.CategoryId = categoryId++; 
      obj.CategoryName = Console.ReadLine(); 

      do{ 
       Console.WriteLine("want to add SubCategory ----(Y/N)"); 
       string loop = Console.ReadLine(); 

       if (loop == "Y" || loop == "y") 
       { 
        List<SubCategory> subcategories = new List<SubCategory>(); 
        SubCategory sub = new SubCategory(); 

        sub.CategoryId = obj.CategoryId; 
        sub.SubCategoryId = subcategoryId++; 
        sub.SubCategoryName = Console.ReadLine(); 
        do 
        { 
         Console.WriteLine("want to add product ----(Y/N)"); 
         string loop1 = Console.ReadLine(); 

         if (loop1 == "y" || loop == "Y") 
         { 

          List<Product> products = new List<Product>(); 
          Product product = new Product(); 
          Product product1 = new Product(); 
          Console.Write("Name :"); 
          product.ProdictId = productId++; 
          product.ProdictName = Console.ReadLine(); 
          Console.Write("Price :"); 
          product.ProductPrice = Convert.ToDouble(Console.ReadLine()); 

          product.SubCategoryId = sub.SubCategoryId; 

          sub.Products.Add(product); 
         } 
         else { break; } 
         sub.Products.Add(pro) 
        } while (true); 


        obj.SubCategories.Add(sub); 
       } 
       else { break; } 

      } while (true); 
      categories.Add(obj); 
     } 

附:這裏categoryId,SubCategoryId和ProductId被設置爲自動增量。

如何將多個產品添加到子類別,並將多個子類別添加到類別。

這將是一個很大的幫助。先謝謝你。

+0

你分享的代碼有什麼問題?它只會是控制檯應用程序嗎? –

+0

我認真質疑這個循環的邏輯,並且您還沒有指定一個實際的問題,但我注意到,你的第二個「如果循環語句」正在檢查兩個不同的循環變量,當我想你想檢查同一變量大寫和小寫Y. –

+0

我瞭解,直到'產品產品1 =新產品();' 我不知道爲什麼你定義了這個,即使你甚至不使用它。 – GBursali

回答

1
SubCategory sub = new SubCategory(){Products = new List<Product>()}; 

,而不是

SubCategory sub = new SubCategory(); 

而且

Category obj = new Category(){SubCategories = new List<SubCategory>()}; 

Category obj = new Category(); 

,而不是和刪除這些

List<Product> products = new List<Product>(); 
List<SubCategory> subcategories = new List<SubCategory>(); 

您應該在類的變量上定義子類別和產品,而不是其他變量。拋出Nullexception是因爲它無法在你的obj類中看到任何列表(你擁有它們但不在你的課堂中)。

+0

明白了。你的解決方案就像一個魅力。謝謝。 –

1

與您的代碼的問題是集合屬性,如Category類的對象SubCategories財產和SubCategory類的對象Products屬性沒有被正確初始化。

對您的代碼進行以下更改。

如下所示初始化obj的SubCategories屬性。

Category obj = new Category(); 
obj.SubCategories = new List<SubCategory>(); // Add this new line to your code 

更改以下行

if (loop1 == "y" || loop == "Y") 

if (loop1 == "y" || loop1 == "Y") 

初始化Products子類別的屬性如下。

SubCategory sub = new SubCategory(); 
sub.Products = new List<Product>(); //Add this new line to your code. 

從代碼中刪除以下行。

List<SubCategory> subcategories = new List<SubCategory>(); 
List<Product> products = new List<Product>(); 
Product product1 = new Product(); 
sub.Products.Add(pro) 

代碼的最終版本應該如下所示。

Category obj = new Category(); 
obj.SubCategories = new List<SubCategory>(); 
int categoryId = 0; 
obj.CategoryId = categoryId++; 
Console.Write("Enter Category Name : "); 
obj.CategoryName = Console.ReadLine(); 

do 
{ 
    Console.WriteLine("want to add SubCategory ----(Y/N)"); 
    string loop = Console.ReadLine(); 
    if (loop == "Y" || loop == "y") 
    { 
     SubCategory sub = new SubCategory(); 
     sub.Products = new List<Product>(); 
     sub.CategoryId = obj.CategoryId; 
     sub.SubCategoryId = subcategoryId++; 
     Console.Write("EnterSub Category Name : "); 
     sub.SubCategoryName = Console.ReadLine(); 
     do 
     { 
      Console.WriteLine("want to add product ----(Y/N)"); 
      string loop1 = Console.ReadLine(); 
      if(loop1 == "y" || loop1 == "Y") 
      { 
       Product product = new Product(); 
       Console.Write("Name :"); 
       product.ProductId = productId++; 
       product.ProdictName = Console.ReadLine(); 
       Console.Write("Price :"); 
       product.ProductPrice = Convert.ToDouble(Console.ReadLine()); 
       product.SubCategoryId = sub.SubCategoryId; 
       sub.Products.Add(product); 
      } 
      else { break; } 

     } while (true); 
     obj.SubCategories.Add(sub); 
    } 
    else { break; } 
} while (true); 

categories.Add(obj); 

這將解決您的所有問題。

+0

問題是我無法將產品數據添加到子類別。感謝你的觀點。 –

相關問題