C# linq分组ID基并将公共数据插入新数组
我正在处理集合,集合是groupby ID,我得到了一些重复的数据,这些数据不是很完美,所以我在寻找一些最佳的处理方法,这样我就可以得到下面的预期结果样本数据 现在的收藏品看起来是这样的C# linq分组ID基并将公共数据插入新数组,c#,linq,C#,Linq,我正在处理集合,集合是groupby ID,我得到了一些重复的数据,这些数据不是很完美,所以我在寻找一些最佳的处理方法,这样我就可以得到下面的预期结果样本数据 现在的收藏品看起来是这样的 [{ "id": 116, "amgId": 168755, "amgName": "FIT", "prodQty": 4801, "prodMonth": "2020/03", }, {
[{
"id": 116,
"amgId": 168755,
"amgName": "FIT",
"prodQty": 4801,
"prodMonth": "2020/03",
},
{
"id": 117,
"amgId": 168755,
"amgName": "FIT",
"prodQty": 3746,
"prodMonth": "2020/04",
}],
[
{
"id": 61,
"amgId": 168383,
"amgName": "CIVIC",
"prodQty": 0,
"prodMonth": "2020/03"
},
{
"id": 62,
"amgId": 168383,
"amgName": "CIVIC",
"prodQty": 0,
"prodMonth": "2020/04"
}],
expecting to be grouped like below
[
"amgId": 168755,
"amgName": "FIT",
"prodQty"{
"prodQty1": 4801,
"prodQty2": 3746,
}
],
[
"amgId": 168383,
"amgName": "CIVIC",
"prodQty"{
"prodQty1": 0,
"prodQty2": 0,
}
]
我这样做了,不管怎样我都会让它更有效率
var grp = productionvolume.GroupBy(x => x.AmgId).Select(y => y.ToList()).ToList();
foreach (var production in grp)
{
Dictionary<string, object> prodQty = new Dictionary<string, object>();
Dictionary<string, object> Forecast_type = new Dictionary<string, object>();
Dictionary<string, object> Month = new Dictionary<string, object>();
Dictionary<string, object> Qty = new Dictionary<string, object>();
prodQty.Add("AmgName", production.Select(a => a.AmgName).FirstOrDefault());
prodQty.Add("AmgId",production.Select(id => id.AmgId).FirstOrDefault());
int count = 0;
foreach (var prod in production)
{
Forecast_type.Add("ForecastType"+count, prod.ForecastType );
Month.Add("ProdMonth"+count, prod.ProdMonth);
Qty.Add("ProdQty"+count,prod.ProdQty);
count ++;
}
prodQty.Add("Forecast_type",Forecast_type);
prodQty.Add("ProdMonth",Month);
prodQty.Add("ProdQty", Qty);
//prodQty.Add(Qty);
prodQty_result.Add(prodQty);
}
var grp=productionvolume.GroupBy(x=>x.AmgId)。选择(y=>y.ToList()).ToList();
foreach(玻璃钢中的var生产)
{
Dictionary prodQty=新字典();
字典预测类型=新字典();
字典月=新字典();
字典数量=新字典();
prodQty.Add(“AmgName”,production.Select(a=>a.AmgName.FirstOrDefault());
prodQty.Add(“AmgId”,production.Select(id=>id.AmgId.FirstOrDefault());
整数计数=0;
foreach(生产中的var产品)
{
预测类型添加(“预测类型”+计数,产品预测类型);
月。添加(“生产月”+计数,生产月);
数量添加(“生产数量”+计数,生产数量);
计数++;
}
产品数量添加(“预测类型”,预测类型);
产品数量添加(“产品月”,月);
产品数量添加(“产品数量”,数量);
//产品数量增加(数量);
产品数量\结果添加(产品数量);
}
到目前为止您尝试了什么?每个最多有2个吗?每个最多有5个。我尝试将它们分组,然后在内部循环以将它们插入新数组中,但Dinn认为这是一种更好的方法。感谢GroupBy,然后循环结果并始终获取第一个结果应该这样做prodQty可以是一个值数组而不是prodQty1、prodQty2等吗。?