将CSV文件内容分离为数组

时间:2013-11-05 03:23:55

标签: c# arrays string csv

我的CSV文件格式如下

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

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

4 个答案:

答案 0 :(得分:1)

您应该创建自己的类,其中包含ObjectValueAttribute并将其存储在列表中。

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)将数据(在同一列中)放到同一列表中