如何在c#中使用CSV文件创建列表?

时间:2015-01-14 17:07:49

标签: c# csv

简单地说,我的项目中有一个带有产品表和产品类的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);
    }
}

2 个答案:

答案 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库。