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]) {//???}...

C#:比较两个列表并记录值的变化

听起来你只是想要这样的东西:

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 方法基本上以两个序列(按顺序)匹配元素,并根据您提供的投影将每对元素投影到另一个值中。