1

そのモデルをコレクションにフラット化しようとしています。

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;          

}

LINQ を使用して、それらを次の型のオブジェクトのコレクションに変換する必要があります。

public class MixedClass 
 {
  public string  CategoryId;   
  public string  SubcategoryId;          
  public string  ProductId ;
  public string  Supplier1Id ;
  public string  Supplier2Id ;

 }

selectmany を試してみましたが、十分に深く掘り下げることができませんでした。

4

1 に答える 1

4

これを簡単に行うことができます:

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,
                });
于 2013-05-31T21:00:11.210 に答える