简单地说,我的项目中有一个带有产品表和产品类的excel CSV文件 我似乎无法提取数据,以便从CSV文件的列表中创建Product对象列表。 我意识到发布了类似的问题,但我似乎无法让它正常工作。 任何人都可以发现问题吗?
private static List<Product> ReadProductFile()
{
List<Product> products = new List<Product>();
string curdir = Directory.GetCurrentDirectory();
string filename = @"C:\Projects\ProductSales\ProductSales\Data\productdetails.csv";
string[] linesInFile = File.ReadAllLines(filename);
string[] ProductDetails = new string[0];
for (int i = 0; i < linesInFile.Length; i++)
{
string currentLine1 = linesInFile[i];
ProductDetails = currentLine1.Split(',');
}
foreach (var p in ProductDetails)
{
Product prod = new Product()
{
prod.ID = p. ??
};
products.Add(prod);
}
}
答案 0 :(得分:0)
将您的代码更改为:
for (int i = 0; i < linesInFile.Length; i++)
{
string currentLine1 = linesInFile[i];
ProductDetails = currentLine1.Split(',');
foreach (var p in ProductDetails)
{
Product prod = new Product();
{
prod.ID = p;
};
products.Add(prod);
}
}
答案 1 :(得分:0)
您的ProductDetails
现在只是一些字符串值,您需要将这些字符串与特定字段相关联。最简单的方法是手动完成,只需检查文件中的顺序并执行以下操作:
for (int i = 1; i < linesInFile.Length; i++)
{
string currentLine1 = linesInFile[i];
ProductDetails = currentLine1.Split(',');
Product prod = new Product();
{
ID = ProductDetails[0];
Name = ProductDetails[1];
};
products.Add(prod);
}
我用i = 1
启动了循环,因为我认为第一行将包含标题。
但是,如果文件格式发生更改,则必须重写此代码,因此您可能希望自动将属性链接到列。如果是这种情况,请查看System.Reflection
库。