我的CSV文件被格式化这样分离CSV文件内容到一个数组
Object,Value,Attribute
Object,Value,Attribute
Object,Value,Attribute
等
我会需要3个独立的数组? (我认为这是做这件事的最好方式。)一个用于对象,然后我可以将它放入我的图表中,一个用于值和属性。我对数组还不是很了解。
我的CSV文件被格式化这样分离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]
});
}
}
}
你对字段的处理取决于你将如何使用数据。您可能需要一个数组结构或对象,其中数组中的每个元素都是一行,并且对象/结构的每个成员都是一列。
这里有一个结构,在那里你可以把你的数据的一个很简单的例子:
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();
}
通知暧昧功能“分裂线“。很多方法来分割字符串。查看here以将字符串拆分为字段的最佳方法。
这实际上取决于你想要对数据做什么。看来你想要绘制每个类别的数据。如果是这种情况,那么最简单的方法是将每个列放在同一个列表中。
1)读出的CSV文件,每行 2)分裂基于逗号 3)行把数据(在同一列),以相同的列表
String.Split可能不是最好的答案;如果任何列包含不是分隔符的逗号,则效果不佳。 –
逗号作为值的一部分在CSV文件中始终是一个棘手的情况,应该进行适当的处理。这超出了这个问题的范围。你已经提供了一个很好的链接,所以如果他遇到这个问题,OP应该看看那里。 –