如果数据与另一个 csv 文件匹配,是否有办法将 csv 文件数据打印到控制台?

Is there a way to print csv file data to console if the data matches another csv file?

我希望能够检查一个 csv 文件与另一个 csv 文件。如果 file1 中的第一列数据与 file2 中的第一列数据匹配,则只打印匹配的行,而不打印其余行。我知道如何将 csv 文件打印到控制台,但想知道是否有办法做到这一点。下面是我到目前为止所做的代码,但我认为这不是正确的方法。任何帮助,将不胜感激。谢谢

operands = new ArrayList();

string[] file1 = file.ReadAllLines(@"..\..\data1.csv").Split(',');
string[] file2 = file.ReadAllLines(@"..\..\data2.csv").Split(',');

foreach (var line in file1)
{
 if (line.Split(',')[0].Equals(file2[0])
 {
   operands.AddRange(file1);
}
}



您需要检查 file1 每行的第一列和 每行 file2,

你可以试试下面

using System;
using System.Linq;
using System.Collection.Generic;
...

//ReadAllLines() returns string[], you can't split string array, you need split individual element
string[] file1 = file.ReadAllLines(@"..\..\data1.csv");
string[] file2 = file.ReadAllLines(@"..\..\data2.csv");
List<string> operands = new List<string>();
for(int i = 0; i < Math.Min(file1.Length, file2.Length); i ++)
{
    if(file1[i].Split(',').First().Equals(file2[i].Split(',').First()))
    {                                  //^^^^^^^^^^^^^^^^^^^^^^^^^^^^ This was missing 
        Console.WriteLine($"Line {i+1} matches first column data");
        operands.Add(file1[i]);

        //If you want to use ArrayList, then
        //operands.Add(file1[i]); //You were missing index i.e [i]
    } 
}

根据您更新的代码,我建议使用 List<string> instead of ArrayList 并将整行存储到其中。