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是一个列表,它有两个属性,即产品类别,它是一个sting,productIds是ProductCatList中的另一个列表
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
实现上述功能我有两个课程如下
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>();
}
我认为现在很清楚
答案 0 :(得分: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()
});
答案 1 :(得分: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
}
});
答案 2 :(得分: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() };
}
感谢。
答案 3 :(得分:0)
var grouped = ProductCatList.GroupBy(g => g.ProductCategory )
.Select(g => new ProductCatGroup()
{
ProductCategory = g.Key,
ProductList = g.Select(p => p.productId)
.ToList()
});