我需要打开一个csv文件。比我需要过滤每个数据并为其生成每个值的输出。
◘例子
•输入文件=“ full list.csv”
NAME CITY
Mark Venezia
John New York
Lisa San Miguel
Emily New York
Amelia New York
Nicolas Venezia
Bill San Miguel
Steve Venezia
输出将是=
•file1 =“完整list_Venezia.csv”
NAME CITY
Mark Venezia
Nicolas Venezia
Steve Venezia
•file2 =“完整list_New York.csv”
NAME CITY
John New York
Emily New York
Amelia New York
•file3 =“完整列表_圣米格尔”
NAME CITY
Lisa San Miguel
Bill San Miguel
我在Visual Studio上将C#与ConsoleApplication一起使用,并开始以这种方法读取输入文件:
string inputFile = "full list.csv";
string outputFile;
string line;
string titles = File.ReadLines(inputFile).First();
System.IO.StreamReader file = new System.IO.StreamReader(inputFile);
while ((line = file.ReadLine()) != null)
{
}
file.Close();
System.IO.StreamWriter fileOut = new System.IO.StreamWriter(outputFile);
foreach (DatiOutput objOut in listOutput)
{
}
fileOut.Close();
有没有可以过滤所需数据的算法?
这是一种非LINQy的方法,该方法使用Dictionary来基于城市名称作为Key来保留对每个输出文件的引用(但是LINQ并没有错!):
string[] values;
string header;
string line, city, outputFileName;
string inputFile = "full list.csv";
Dictionary<string, System.IO.StreamWriter> outputFiles = new Dictionary<string, System.IO.StreamWriter>();
using (System.IO.StreamReader file = new System.IO.StreamReader(inputFile))
{
header = file.ReadLine();
while ((line = file.ReadLine()) != null)
{
values = line.Split(",".ToCharArray());
city = values[1];
if (!outputFiles.ContainsKey(city))
{
outputFileName = "full list_" + city + ".csv";
outputFiles.Add(city, new System.IO.StreamWriter(outputFileName));
outputFiles[city].WriteLine(header);
}
outputFiles[city].WriteLine(line);
}
}
foreach(System.IO.StreamWriter outputFile in outputFiles.Values)
{
outputFile.Close();
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句