C# 在Linq中合并两个列表
我有两张单子C# 在Linq中合并两个列表,c#,.net,linq,class,C#,.net,Linq,Class,我有两张单子 List<Product> Products; List<Showcase> Showcases; 列出产品; 列出陈列柜; 产品类包含ShowcaseID,它是Showcase类的ID值 和展示类一样 public class Showcase { public int ID { get; set;} //..... public List<Product> Products { get; set; } } 公共类展示 { 公
List<Product> Products;
List<Showcase> Showcases;
列出产品;
列出陈列柜;
产品类包含ShowcaseID,它是Showcase类的ID值
和展示类一样
public class Showcase
{
public int ID { get; set;}
//.....
public List<Product> Products { get; set; }
}
公共类展示
{
公共int ID{get;set;}
//.....
公共列表产品{get;set;}
}
预期产量强>
List<Showcase> MergedList; // Same of Showcase class from beginning but contains All Product groupped by ShowcaseID
列表合并列表;//Showcase类从一开始就是相同的,但包含按ShowcaseID分组的所有产品
ofc我可以用循环合并这些对象,但我想用Linq来合并,最简单的方法是什么?尝试用ForEach方法创建列表
列出产品;
列出陈列柜;
Showcases.ForEach(s=>s.Products.AddRange(Products.Where(p=>p.ShowcaseID==s.ID));
更新1
如果您不想丢失展示列表,可以使用以下选项
List<Showcase> MergedList = new List<Showcase>();
MergedList.AddRange(Showcases.Select(s => new Showcase { Products = products.Where(p => p.ShowcaseID == s.ID).ToList() }));
List MergedList=new List();
MergedList.AddRange(Showcases.Select(s=>newshowcase{Products=Products.Where(p=>p.ShowcaseID==s.ID).ToList());
您期望的输出是什么?您需要使用一个公共字段将两个列表连接起来。请参阅网页:我编写了预期输出,我不需要任何其他类,只需将产品复制到与Showcase ID相关的Showcases列表中即可
List<Showcase> MergedList = new List<Showcase>();
MergedList.AddRange(Showcases.Select(s => new Showcase { Products = products.Where(p => p.ShowcaseID == s.ID).ToList() }));