1
 ProductCategory = "A"
 Public Class ProdCat
 {
     public   int productId,
     public string  productCategory
}

このようなリストがあります

List<ProdCat> ProdCatList = new List<ProdCat>();
ProdCatList.Add( new ProdCat{ productId= 1, productCategory= "A" } );
ProdCatList.Add( new ProdCat{ productId= 2, productCategory= "B" } );
ProdCatList.Add( new ProdCat{ productId= 3, productCategory= "A" } );
ProdCatList.Add( new ProdCat{ productId= 4, productCategory= "C" } );
ProdCatList.Add( new ProdCat{ productId= 5, productCategory = "A" } );
ProdCatList.Add( new ProdCat{ productId = 6, productCategory= "B" } );

このようなリストを作成する必要があります。ProductCatList はリストであり、文字列である Product Category と ProductCatList の別のリストである productIds という 2 つのプロパティがあることに注意してください。

ProductCatList
     ProductCategory = "A"
         productId = 1
         productId = 3
         productId = 5
   ProductCategory = "B"
         productId = 2
         productId = 6
   ProductCategory = "C"
         productId = 4

クラスの実装は以下のようになります

Public Class ProductCatGroup
{
   string      ProductCategory ,
   IList <int> ProdcutId 

}

LINQを使用して上記のようなことを達成するにはどうすればよいですか


以下の2つのクラスがあります

 public class product
            {
    
                public int productId { get; set; }
                public string productName { get; set; }
            }
    
            public class ProductCat
            {
    
    
                public int productId { get; set; }
                public string productName { get; set; }
                public int productCatId { get; set; }
                public string ProductCatName { get; set; }
            }
    

リストは以下の通り

   List<ProdCat> ProdCatList = new List<ProdCat>();
    ProdCatList.Add( new ProdCat{ productId= 1, productCatId = "1", productName="PA", ProductCatName = "PC1"});
    ProdCatList.Add( new ProdCat{ productId= 2, productCatId = "2", productName="PB", ProductCatName = "PC2"});
    ProdCatList.Add( new ProdCat{ productId= 3, productCatId = "2", productName="PC", ProductCatName = "PC2"});
    ProdCatList.Add( new ProdCat{ productId= 4, productCatId = "1", productName="PD", ProductCatName = "PC1"});
    ProdCatList.Add( new ProdCat{ productId= 5, productCatId = "1", productName="PE", ProductCatName = "PC1"});

そして、私は以下のようなものを考え出す必要があります

 ProductCatGroup
      productCatId = "1"
      ProductCatName = "PC1"
           productId = 1
           productName = "PA"
           productId = 4
           productName = "PD"
           productId = 5
           productName = "PE"
      productCatId = "2"
      ProductCatName = "PC2"
             productId = 2
             productName = "PB"
             productId = 3
             productName = "PC"

クラスの実装は以下の通り

public class ProductCatGroup
{
           public int productCatId { get; set; }
            public int productCatName{ get; set; }
            public IList<Product> ProductList = new List<Product>();

}

これはもう明らかだと思います

4

4 に答える 4

3

ProductCatGroup次のように初期化できます。

        ProductCatGroup g = new ProductCatGroup
        {
            ProductCategory = "A",
            ProductID = (new int[] { 1, 3, 5 }).ToList()
        };

次のようにProductCatGroup使用して、リストの例から のリストを生成できます。GroupBy

        IEnumerable<ProductCatGroup> groups = ProdCatList
            .GroupBy(item => item.productCategory)
            .Select(g => new ProductCatGroup
            {
                ProductCategory = g.Key,
                ProductID = g.Select(x => x.productId).ToList()
            });
于 2012-09-11T05:56:30.433 に答える
1
var grouped = ProductCatList.GroupBy(g => new{g.productCatId,g.productCatName})
                     .Select(g => new ProductCatGroup()
                                  {
                                      productCatId = g.Key.productCatId,
                                      productCatName = g.Key.productCatName,
                                      ProductList = g.Select(p => new Prroduct()
                                                    {
                                                         productid = p.productId,
                                                         productName = p.productName
                                                     }
                                  });
于 2012-09-11T07:10:45.763 に答える
0
var grouped = ProductCatList.GroupBy(g => g.ProductCategory )
                 .Select(g => new ProductCatGroup()
                              {
                                  ProductCategory = g.Key,
                                  ProductList = g.Select(p =>  p.productId)
                                                 .ToList()
                              });
于 2012-09-11T07:11:40.317 に答える
0

役立つ場合は、以下のコードを見つけてください

public class ProdCat
{
    public int productId;
    public string productCategory;
}

public class ProductCatGroup
{
    public string ProductCategory;
    public IList<int> ProdcutId;

}
public Form1()
{
    List<ProdCat> ProdCatList = new List<ProdCat>();
    ProdCatList.Add(new ProdCat { productId = 1, productCategory = "A" });
    ProdCatList.Add(new ProdCat { productId = 2, productCategory = "B" });
    ProdCatList.Add(new ProdCat { productId = 3, productCategory = "A" });
    ProdCatList.Add(new ProdCat { productId = 4, productCategory = "C" });
    ProdCatList.Add(new ProdCat { productId = 5, productCategory = "A" });
    ProdCatList.Add(new ProdCat { productId = 6, productCategory = "B" });

    var productCatList = from pc in ProdCatList
        group pc by pc.productCategory into pcGroup
        select new ProductCatGroup { ProductCategory = pcGroup.Key, ProdcutId = pcGroup.Select(x => x.productId).ToList() }; 
}

ありがとう。

于 2012-09-11T06:10:54.043 に答える