0

我的 CSV 文件格式如下

Object,Value,Attribute
Object,Value,Attribute
Object,Value,Attribute

等等

我需要 3 个单独的数组吗?(我认为这是最好的方法。)一个用于对象,然后我可以将其输入到我的图表中。一个用于值和属性。我对数组还不太了解。

4

4 回答 4

1

您应该创建自己的包含 的类ObjectValue并将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]
   });
  }
 }
}
于 2013-11-05T03:29:14.050 回答
0

这实际上取决于您想对数据做什么。您似乎想按类别绘制数据图表。如果是这种情况,那么最简单的方法是将每个列放在同一个列表中。

1)读取 csv 文件,每行 2)基于逗号分割行 3)将数据(在同一列中)放入同一列表

于 2013-11-05T22:21:33.930 回答
0

我推荐一个包含对象、值和属性的类的数组,因为这样您就不必担心丢失数据的复杂性,并且如果添加更多列则更改所有数组。

于 2013-11-05T03:28:18.900 回答
0

您对字段的操作取决于您将如何使用数据。您可能需要一个结构或对象数组,其中数组中的每个元素都是一行,对象/结构的每个成员都是一列。

这是一个非常简单的结构示例,您可以在其中保存数据:

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”。有很多方法可以拆分字符串。在此处查找将字符串拆分为字段的最佳方法。

于 2013-11-05T03:36:04.150 回答