我的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應該看看那裏。 –