在c#中读取csv文件的第一列?
有没有一种简单的方法可以在c#中读取和显示CSV文件的第一列? 像这样的在c#中读取csv文件的第一列?,c#,csv,C#,Csv,有没有一种简单的方法可以在c#中读取和显示CSV文件的第一列? 像这样的 String csv = File.ReadAllLines("@..\..\..\Data.csv).Split(',')[0]; Console.WriteLine(csv); 或者我必须在csv文件中的每一行上循环,只取每一行的第一个值吗 谢谢根据,您可以选择要提取的csv列 var csv = File.ReadAllLines(@"C:..\..\..\Data.csv"); public List<My
String csv = File.ReadAllLines("@..\..\..\Data.csv).Split(',')[0];
Console.WriteLine(csv);
或者我必须在csv文件中的每一行上循环,只取每一行的第一个值吗
谢谢根据,您可以选择要提取的csv列
var csv = File.ReadAllLines(@"C:..\..\..\Data.csv");
public List<MyMappedCSVFile>() myExtraction = new List<MyMappedCSVFile>();
foreach(string line in csv)
{
var delimitedLine = line.Split(',');
myExtraction.Add(new MyMappedCSVFile(delimitedLine[0], delimitedLine[1]));
}
var csv=File.ReadAllLines(@“C:..\..\Data.csv”);
public List()myExtraction=new List();
foreach(csv中的字符串行)
{
var delimitedLine=line.Split(',');
添加(新的MyMappedCSVFile(delimitedLine[0],delimitedLine[1]);
}
对于读取csv文件,我建议使用。您可以这样使用它:
var firstColumn = new List<string>();
using (var fileReader = File.OpenText("@..\..\..\Data.csv"))
using (var csvResult = new CsvHelper.CsvReader(fileReader))
{
while (csvResult.Read())
{
var field = csvResult.GetField<string>(0);
firstColumn.Add(field);
}
}
var firstLine = await GetFirstLineAsync(@"C:\Temp\Test.csv").ConfigureAwait(false);
var firstColumn=newlist();
使用(var fileReader=File.OpenText(“@..\..\Data.csv”))
使用(var csvResult=new CsvHelper.CsvReader(文件阅读器))
{
while(csvResult.Read())
{
var字段=csvResult.GetField(0);
firstColumn.Add(字段);
}
}
试试这个:
public static async Task<HashSet<string>> GetFirstLineAsync(string fileFullname)
{
try
{
var firstLine = await File.OpenText(fileFullname).ReadLineAsync().ConfigureAwait(false);
return firstLine.Split(';').ToHashSet();
}
catch (UnauthorizedAccessException ex)
{
// TODO: Handle the System.UnauthorizedAccessException
}
catch (DirectoryNotFoundException ex)
{
// TODO: Handle the System.IO.DirectoryNotFoundException
}
catch (FileNotFoundException ex)
{
// TODO: Handle the System.IO.FileNotFoundException
}
catch (ArgumentException ex)
{
// TODO: Handle the System.ArgumentException
}
catch (PathTooLongException ex)
{
// TODO: Handle the System.IO.PathTooLongException
}
catch (NotSupportedException ex)
{
// TODO: Handle the System.NotSupportedException
}
catch (ObjectDisposedException ex)
{
// TODO: Handle the System.ObjectDisposedException
}
catch (InvalidOperationException ex)
{
// TODO: Handle the System.InvalidOperationException
}
return null;
}
循环有什么问题?如果循环起作用,那么就这样做并继续移动。您可以使用LINQ,但即使这样,也将使用引擎盖下的环路。一个建议是,使用
ReadLines
而不是ReadAllLines
,但即使这样也可能没有什么区别,所以这只是一个建议。动机是什么?CSV有多大?您想要的是代码行数较少的东西还是不占用过多计算机资源的东西?不要将一行代码与“简单解决方案”混为一谈!无法跳过读取CSV文件中的所有其他“列”,而只读取第一列。CSV是纯文本文件,行长可能会有所不同(无法读取第一列并跳到下一行。我认为您应该使用现有的框架(如前面所说的CsvHelper),不要重新发明轮子(如果它不是学校作业)如果第一列中的引号内有,则解决方案将失败。您需要跳过引号文本以获得分隔符(不必是逗号)。