从 .csv 读取、计算、写入 .csv
Read from .csv, calculate, write on .csv
我正在为 C# 使用 csv reader
。
这是我的 Record
class
internal class Record
{
int _y;
int _x;
[Name("y")]
public int y { get; set; }
[Name("x")]
public int x { get; set; }
public int getSum()
{
return _x+_y;
}
}
然后,我尝试读取多个 .csv 文件并将聚合写入 1 个 .csv 文件
using (var writer = new StreamWriter(SaveTxt.Text))
using (var csvOut = new CsvWriter(writer, CultureInfo.InvariantCulture))
{
for (int i = 0; i < Int16.Parse(numberFile); i++)
{
using (var reader = new StreamReader(files[i]))
using (var csv = new CsvReader(reader, CultureInfo.InvariantCulture))
{
var records = csv.GetRecords<Record>();
csvOut.WriteRecords(records);
}
}
}
但结果只显示 x
和 y
数据。不显示 getSum()
函数的结果。我应该怎么做才能在写入其他 .csv 之前操作我从 .csv 读取的数据?
我相信 CsvReader 正在写入 X 和 Y,因为它们是属性;它不会调用方法并将它们的结果包含在文件中。将 getSum 方法转换为 属性,它应该出现在文件中。您可能还必须给它一个名称属性。这是固定的记录 class:
internal class Record
{
[Name("y")]
public int X { get; set; }
[Name("x")]
public int Y { get; set; }
[Optional]
[Name("sum")]
public int Sum { get { return X + Y; } set; } }
}
(请注意,在 c# 中,我们编写的属性和方法名称以大写字母开头..)
我删除了你的 _x 和 _y,因为它们什么也没做;它们没有连接到 x 和 y 属性,它们的默认值始终为 0,因此将它们用于求和也将是 0
你问在写入数据之前如何操作数据;在这两行之间输出一些代码:
var records = csv.GetRecords<Record>();
//put code here
csvOut.WriteRecords(records);
应该是class记录的问题。
GetSum()
是一个函数,函数不会被序列化。
x
和 y
是属性(正如您可以在 { get; set; } 上指出的那样)并将被序列化。
您可以像这样将函数更改为 属性:
public int GetSum
{
get
{
return _x+_y;
}
}
下一个问题是 _x
和 _y
变量永远不会设置值。所以 GetSum
总是 return 0.
我正在为 C# 使用 csv reader
。
这是我的 Record
class
internal class Record
{
int _y;
int _x;
[Name("y")]
public int y { get; set; }
[Name("x")]
public int x { get; set; }
public int getSum()
{
return _x+_y;
}
}
然后,我尝试读取多个 .csv 文件并将聚合写入 1 个 .csv 文件
using (var writer = new StreamWriter(SaveTxt.Text))
using (var csvOut = new CsvWriter(writer, CultureInfo.InvariantCulture))
{
for (int i = 0; i < Int16.Parse(numberFile); i++)
{
using (var reader = new StreamReader(files[i]))
using (var csv = new CsvReader(reader, CultureInfo.InvariantCulture))
{
var records = csv.GetRecords<Record>();
csvOut.WriteRecords(records);
}
}
}
但结果只显示 x
和 y
数据。不显示 getSum()
函数的结果。我应该怎么做才能在写入其他 .csv 之前操作我从 .csv 读取的数据?
我相信 CsvReader 正在写入 X 和 Y,因为它们是属性;它不会调用方法并将它们的结果包含在文件中。将 getSum 方法转换为 属性,它应该出现在文件中。您可能还必须给它一个名称属性。这是固定的记录 class:
internal class Record
{
[Name("y")]
public int X { get; set; }
[Name("x")]
public int Y { get; set; }
[Optional]
[Name("sum")]
public int Sum { get { return X + Y; } set; } }
}
(请注意,在 c# 中,我们编写的属性和方法名称以大写字母开头..)
我删除了你的 _x 和 _y,因为它们什么也没做;它们没有连接到 x 和 y 属性,它们的默认值始终为 0,因此将它们用于求和也将是 0
你问在写入数据之前如何操作数据;在这两行之间输出一些代码:
var records = csv.GetRecords<Record>();
//put code here
csvOut.WriteRecords(records);
应该是class记录的问题。
GetSum()
是一个函数,函数不会被序列化。
x
和 y
是属性(正如您可以在 { get; set; } 上指出的那样)并将被序列化。
您可以像这样将函数更改为 属性:
public int GetSum
{
get
{
return _x+_y;
}
}
下一个问题是 _x
和 _y
变量永远不会设置值。所以 GetSum
总是 return 0.