如果数据与另一个 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
并将整行存储到其中。
我希望能够检查一个 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
并将整行存储到其中。