Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# LINQ:如何使用LINQ展平深嵌套对象_C#_Linq - Fatal编程技术网

C# LINQ:如何使用LINQ展平深嵌套对象

C# LINQ:如何使用LINQ展平深嵌套对象,c#,linq,C#,Linq,我正试着把那个模型做成收藏品 public class Category { public string name; public string id; public Subcategory subcategory; } public class Subcategory { public string name; public string id; public List

我正试着把那个模型做成收藏品

public class Category 
  {
      public string name;   
      public  string id;          
      public  Subcategory subcategory;
  }


public class Subcategory
{
   public string name;   
   public  string id;          
   public List<Product> products;
}


public class Product
{
   public string name;   
   public  string id;          
   public Supplier1 supplier1;
   public Supplier2 supplier2
}

public class Supplier1 
{
   public string name;   
   public  string id;          

}
public class Supplier2 
{
   public string name;   
   public  string id;          

}

我试过很多次,但都不够深入

您可以简单地执行以下操作:

var results = 
    from c in Categories
    from p in c.subcategory.products
    select new MixedClass()
    {
        CategoryId = c.id,
        SubcategoryId = c.subcategory.id,
        ProductId = p.id,
        Supplier1Id = p.supplier1.id,
        Supplier2Id = p.supplier2.id,
    };
或者,如果您喜欢流利的语法:

var results = Categories
    .SelectMany(c => c.subcategory.products, 
                (c, p) => new MixedClass()
                {
                    CategoryId = c.id,
                    SubcategoryId = c.subcategory.id,
                    ProductId = p.id,
                    Supplier1Id = p.supplier1.id,
                    Supplier2Id = p.supplier2.id,
                });

您可以简单地执行以下操作:

var results = 
    from c in Categories
    from p in c.subcategory.products
    select new MixedClass()
    {
        CategoryId = c.id,
        SubcategoryId = c.subcategory.id,
        ProductId = p.id,
        Supplier1Id = p.supplier1.id,
        Supplier2Id = p.supplier2.id,
    };
或者,如果您喜欢流利的语法:

var results = Categories
    .SelectMany(c => c.subcategory.products, 
                (c, p) => new MixedClass()
                {
                    CategoryId = c.id,
                    SubcategoryId = c.subcategory.id,
                    ProductId = p.id,
                    Supplier1Id = p.supplier1.id,
                    Supplier2Id = p.supplier2.id,
                });

你能发布你失败的尝试吗?现在还不清楚你想要完成什么。这些类如何组合在一起?您希望我们如何获得ProductId?有不止一种产品。这就是为什么它会出现在一个列表中。你能发布你失败的尝试吗?现在还不清楚你想要完成什么。这些类如何组合在一起?您希望我们如何获得ProductId?有不止一种产品。这就是为什么它在一个列表中。第二个版本给了我关于未知x的错误,它来自哪里?然而,第一个版本正是我需要的。谢谢大家!@用户2373759哦,我用一个x写了一个方法,然后修改了它-但是把那个部分留在了。我已经更正了。第二个版本给了我一个错误,认为x是未知的,它来自哪里?然而,第一个版本正是我需要的。谢谢大家!@用户2373759哦,我用一个x写了一个方法,然后修改了它-但是把那个部分留在了。我已经改正了。