ProductCategory = "A"
Public Class ProdCat
{
public int productId,
public string productCategory
}
I have a list like this
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" } );
I need to come up with a list like this. Please note ProductCatList is a list and it has two properties, Namely Product Category which is a sting and productIds which is another list in ProductCatList
ProductCatList
ProductCategory = "A"
productId = 1
productId = 3
productId = 5
ProductCategory = "B"
productId = 2
productId = 6
ProductCategory = "C"
productId = 4
Class Implementation would be like below
Public Class ProductCatGroup
{
string ProductCategory ,
IList <int> ProdcutId
}
How can i achieve something like above using LINQ
I have two classes as below
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; }
}
The list is as below
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"});
And I need to come up with something like below
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"
Class implementation is as below
public class ProductCatGroup
{
public int productCatId { get; set; }
public int productCatName{ get; set; }
public IList<Product> ProductList = new List<Product>();
}
I think this is much clear now
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
}
});