我的CSV文件未正确读取,或者我将对象错误地添加到列表中,但是我没有在列表中添加任何值。
我尝试使用不同的路径访问CSV文件,并且尝试使用不同的方式读取CSV文件,但是没有任何效果。
void TheDex()
{
List<Class1> Pokedex = new List<Class1>();
TextFieldParser parser = new TextFieldParser("pokemon.csv");
parser.TextFieldType = FieldType.Delimited;
parser.SetDelimiters(",");
while (!parser.EndOfData)
{
string row = parser.ReadLine();
String[] Columns = row.Split(Convert.ToChar(","));
Class1 Dex = new Class1();
Dex.DexNumber = Columns[0];
Dex.Name = Columns[1];
Dex.Type1 = Columns[2];
Dex.Type2 = Columns[3];
Dex.Total = Columns[4];
Dex.HP = Columns[5];
Dex.ATK = Columns[6];
Dex.DEf = Columns[7];
Dex.SpAtk = Columns[8];
Dex.SpDef = Columns[9];
Dex.Spd = Columns[10];
Dex.Generation = Columns[11];
Dex.Legendary = Columns[12];
Pokedex.Add(Dex);
}
parser.Close();
}
我希望列表Pokedex包含保存来自CSV数据的对象,但到目前为止Pokedex列表仍然为空。
答案 0 :(得分:1)
您错误地使用了TextFieldParser
类。
初始化parser
后,可以使用ReadFields
方法获取所有字段。它将使用您指定的定界符进行此操作:
List<Class1> Pokedex = new List<Class1>();
string[] delimiters = { "," };
using (TextFieldParser parser = FileSystem.OpenTextFieldParser("Names.txt", delimiters))
{
while (!parser.EndOfData)
{
string[] fields = parser.ReadFields();
// populate your class here
Class1 Dex = new Class1();
Dex.DexNumber = fields[0];
Dex.Name = fields[1];
// add the other fields here
Pokedex.Add(Dex);
}
}
在互联网上有许多使用TextFieldParser
的正确方法的示例。我发现this one显示了上面的示例。
Andy通过将TextFieldParser
包裹在using
子句中,您无需在完成后就关闭解析器,因为using
语句将为您处理。