如何合并两个结果集为4行并实现迭代求和?(已尝试两种方法)
嘿,我来帮你搞定这个合并数据集的问题!先理清楚你的需求:把两个各含4个元素的集合,按对应位置合并成4行的ListViewModel集合,之后还要做迭代和求和操作对吧?
先明确前提(假设你的类结构)
首先我先假设一下你的类定义(毕竟你没给出具体代码,这样方便后续演示):
// 你的List1类,包含某个数值属性 public class List1 { public int Num1 { get; set; } } // 你的List2类,包含另一个数值属性 public class List2 { public int Num2 { get; set; } } // 用于合并的ViewModel类 public class ListViewModel { public int NumberFromList1 { get; set; } public int NumberFromList2 { get; set; } }
正确的合并方法(生成4行结果集)
你之前的两种方法可能踩了“笛卡尔积”的坑(比如用嵌套LINQ查询导致生成16行),或者没按索引对应配对。这里给你两种可靠的实现方式:
方法1:用for循环按索引配对
最直观的方式,直接遍历索引把两个集合的同位置元素绑定:
// 假设你的原始数据集 var list1Collection = new List<List1> { new List1{Num1=5}, new List1{Num1=10}, new List1{Num1=15}, new List1{Num1=20} }; var list2Collection = new List<List2> { new List2{Num2=1}, new List2{Num2=2}, new List2{Num2=3}, new List2{Num2=4} }; var mergedResult = new List<ListViewModel>(); // 按索引一一合并,确保两个集合长度都是4 for (int i = 0; i < list1Collection.Count; i++) { mergedResult.Add(new ListViewModel { NumberFromList1 = list1Collection[i].Num1, NumberFromList2 = list2Collection[i].Num2 }); }
方法2:用LINQ的Zip方法(更简洁)
Zip是LINQ专门用来将两个序列按对应位置配对的方法,完美匹配你的需求:
var mergedResult = list1Collection.Zip(list2Collection, (item1, item2) => new ListViewModel { NumberFromList1 = item1.Num1, NumberFromList2 = item2.Num2 }).ToList();
这两种方法得到的mergedResult都会是4行,每个元素对应两个原集合的同位置数据。
迭代与求和操作
得到正确的合并集合后,迭代和求和就很简单了:
迭代输出每行数据
foreach (var item in mergedResult) { Console.WriteLine($"List1数值:{item.NumberFromList1} | List2数值:{item.NumberFromList2}"); }
求和操作(多种场景)
// 计算List1所有数值的总和 int sumOfList1 = mergedResult.Sum(item => item.NumberFromList1); // 计算List2所有数值的总和 int sumOfList2 = mergedResult.Sum(item => item.NumberFromList2); // 计算每行两个数值的和,再求总和 int totalCombinedSum = mergedResult.Sum(item => item.NumberFromList1 + item.NumberFromList2); Console.WriteLine($"List1总和:{sumOfList1} | List2总和:{sumOfList2} | 总合计:{totalCombinedSum}");
常见错误排查
如果你之前的输出不符合预期,大概率是这两个问题:
- 错误使用了嵌套LINQ查询(比如
from l1 in list1Collection from l2 in list2Collection select ...),这会生成笛卡尔积,得到4×4=16行数据; - 合并时没有按索引对应,导致数据配对混乱。
内容的提问来源于stack exchange,提问作者Mohamed Sahir
相关产品推荐
相关产品推荐

