C#:比较两个列表并记录值的变化
本文关键字:列表 记录 变化 两个 比较 | 更新日期: 2023-09-27 18:32:59
我在这里看到的大多数答案主要涵盖了列表比较时的布尔真/假问题。我感兴趣的是比较两个列表并查看两个列表之间值的变化。
换句话说,我有列表和列表;他们都有两个条目 - 姓名和等级:在列表A中,第一个条目是"汤姆",他的成绩是"100",在列表B中,第一个条目也是"汤姆",但他的成绩现在是"89"。
我可悲的尝试这样做:
private static void DataFromResults(List<data> aList, List<data> bList)
{
using (var reader = newStreamReader(File.OpenRead(@"c:'temp'data.csv")))
{
while(!reader.EndOfStream)
{
var line = reader.ReadLine();
var values = line.Split(',');
string name = new name(values[0]).ToString();
string grade = new grade(values[1]).ToString();
foreach (var data in aList)
{
for (int i = 0; i < aList.Count; i++)
{
if (aList[i] != bList[i]) {//???}...
听起来你只是想要这样的东西:
var differences = aList.Zip(bList,
(a, b) => new { a.Name, Difference = a.Grade - b.Grade });
foreach (var result in differences)
{
if (result.Difference != 0)
{
Console.WriteLine("Change for {0}: {1}", result.Name, result.Difference);
}
}
(如果你想要它成比例而不是绝对值,你可能也想保持初始值......
Zip
方法基本上以两个序列(按顺序)匹配元素,并根据您提供的投影将每对元素投影到另一个值中。