我的 CSV 文件格式如下
Object,Value,Attribute
Object,Value,Attribute
Object,Value,Attribute
等等
我需要 3 个单独的数组吗?(我认为这是最好的方法。)一个用于对象,然后我可以将其输入到我的图表中。一个用于值和属性。我对数组还不太了解。
您应该创建自己的包含 的类Object
,Value
并将Attribute
其存储在列表中。
class SomeClass {
public string MyObject { get; set; }
public string MyValue { get; set; }
public string MyAttribute { get; set; }
}
private List<SomeClass> myList = new List<SomeClass>();
public void ReadCsv(){
using (var sr = new StreamReader("PathToCsvFile")) {
string currentLine;
while ((currentLine = sr.ReadLine()) != null) {
var elements = currentLine.Split(',');
myList.add(new SomeClass {
MyObject = elements[0],
MyValue = elements[1],
MyAttribute = elements[2]
});
}
}
}
这实际上取决于您想对数据做什么。您似乎想按类别绘制数据图表。如果是这种情况,那么最简单的方法是将每个列放在同一个列表中。
1)读取 csv 文件,每行 2)基于逗号分割行 3)将数据(在同一列中)放入同一列表
我推荐一个包含对象、值和属性的类的数组,因为这样您就不必担心丢失数据的复杂性,并且如果添加更多列则更改所有数组。
您对字段的操作取决于您将如何使用数据。您可能需要一个结构或对象数组,其中数组中的每个元素都是一行,对象/结构的每个成员都是一列。
这是一个非常简单的结构示例,您可以在其中保存数据:
struct MyStruct
{
string Column1;
string Column2;
//etc
}
这是一些从文件中填充它的代码:
List<MyStruct> rows = new List<MyStruct>;
s = reader.ReadLine();
while (s != null)
{
string s[] columns = SplitLine(s);
MyStruct row = new MyStruct();
row.Column1 = s[0];
row.Column2 = s[1];
rows.Add(row);
s = reader.ReadLine();
}
请注意模棱两可的函数“SplitLine”。有很多方法可以拆分字符串。在此处查找将字符串拆分为字段的最佳方法。