我的CSV文件格式如下
Object,Value,Attribute
Object,Value,Attribute
Object,Value,Attribute
等
我需要3个独立的阵列吗? (我认为这是做到这一点的最佳方式..)一个对象,然后我可以将其输入到我的图表中......一个用于值和属性。我还不太了解数组。
答案 0 :(得分:1)
您应该创建自己的类,其中包含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 :(得分:0)
我建议使用一个包含对象,值和属性的类数组,因为这样您就不必担心丢失数据的复杂性,并且如果添加更多列,则需要更改所有数组。
答案 2 :(得分:0)
您对字段的处理取决于您将如何使用数据。您可能需要一个结构或对象数组,其中数组中的每个元素都是一行,而object / struct的每个成员都是一列。
这是一个非常简单的结构示例,您可以在其中保存数据:
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”。分裂字符串的方法很多。查看here,了解将字符串拆分为字段的最佳方法。
答案 3 :(得分:0)
这实际上取决于您想要对数据做什么。您似乎想要按类别绘制数据图表。如果是这种情况,那么最简单的方法是将每个col放在同一个列表中。
1)每行读取csv文件 2)根据逗号分割行 3)将数据(在同一列中)放到同一列表中