2017-02-24 94 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

问题是我无法将产品数据添加到子类别。感谢你的观点。 –

相关问题