如何访问 csv 助手中的记录
how to access records in csv helper
下面的代码读取 csv 文件的一列。
它做得很好。
我想将 var 记录复制到十进制数组。
我正在使用 csv 助手。
怎么做最好?
using (var reader = new StreamReader(filename))
using (var csv = new CsvReader(reader, CultureInfo.InvariantCulture))
{
var records = new List<Filevalues>();
csv.Read();
csv.ReadHeader();
while (csv.Read())
{
var record = new Filevalues
{
File_vals = csv.GetField<decimal>("File_vals"),
};
records.Add(record);
}
}
public class Filevalues
{
public decimal File_vals{ get; set; }
}
或者:
using (var reader = new StreamReader(filename))
using (var csv = new CsvReader(reader, CultureInfo.InvariantCulture))
{
var listOfDecimals = new List<decimal>();
csv.Read();
csv.ReadHeader();
while (csv.Read())
{
listOfDecimals.Add(csv.GetField<decimal>("File_vals"));
}
var arrayOfDecimals = listOfDecimals.ToArray();
}
到数组:https://docs.microsoft.com/en-us/dotnet/api/system.linq.enumerable.toarray
或者:
using (var reader = new StreamReader(filename))
using (var csv = new CsvReader(reader, CultureInfo.InvariantCulture))
{
var records = new List<Filevalues>();
csv.Read();
csv.ReadHeader();
while (csv.Read())
{
var record = new Filevalues
{
File_vals = csv.GetField<decimal>("File_vals"),
};
records.Add(record);
}
var arrayOfDecimals = records.Select(x => x.File_vals).ToArray();
}
public class Filevalues
{
public decimal File_vals{ get; set; }
}
LINQ 投影:https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/concepts/linq/projection-operations
最简单的:
using var csv = new CsvReader(new StreamReader(filename), CultureInfo.InvariantCulture));
csv.GetRecords<Filevalues>().Select(f => f.File_vals).ToArray();
(我想我会 ToList() 它而不是数组,并使用列表)
如果 CSV 非常简单,只是一个小数列表,我可能会完全跳过使用 CSV 库:
File.ReadLines(path).Skip(1).Select(decimal.Parse).ToArray();
下面的代码读取 csv 文件的一列。 它做得很好。 我想将 var 记录复制到十进制数组。 我正在使用 csv 助手。 怎么做最好?
using (var reader = new StreamReader(filename))
using (var csv = new CsvReader(reader, CultureInfo.InvariantCulture))
{
var records = new List<Filevalues>();
csv.Read();
csv.ReadHeader();
while (csv.Read())
{
var record = new Filevalues
{
File_vals = csv.GetField<decimal>("File_vals"),
};
records.Add(record);
}
}
public class Filevalues
{
public decimal File_vals{ get; set; }
}
或者:
using (var reader = new StreamReader(filename))
using (var csv = new CsvReader(reader, CultureInfo.InvariantCulture))
{
var listOfDecimals = new List<decimal>();
csv.Read();
csv.ReadHeader();
while (csv.Read())
{
listOfDecimals.Add(csv.GetField<decimal>("File_vals"));
}
var arrayOfDecimals = listOfDecimals.ToArray();
}
到数组:https://docs.microsoft.com/en-us/dotnet/api/system.linq.enumerable.toarray
或者:
using (var reader = new StreamReader(filename))
using (var csv = new CsvReader(reader, CultureInfo.InvariantCulture))
{
var records = new List<Filevalues>();
csv.Read();
csv.ReadHeader();
while (csv.Read())
{
var record = new Filevalues
{
File_vals = csv.GetField<decimal>("File_vals"),
};
records.Add(record);
}
var arrayOfDecimals = records.Select(x => x.File_vals).ToArray();
}
public class Filevalues
{
public decimal File_vals{ get; set; }
}
LINQ 投影:https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/concepts/linq/projection-operations
最简单的:
using var csv = new CsvReader(new StreamReader(filename), CultureInfo.InvariantCulture));
csv.GetRecords<Filevalues>().Select(f => f.File_vals).ToArray();
(我想我会 ToList() 它而不是数组,并使用列表)
如果 CSV 非常简单,只是一个小数列表,我可能会完全跳过使用 CSV 库:
File.ReadLines(path).Skip(1).Select(decimal.Parse).ToArray();