如何从 C# 中的 CSV 文件创建列表?

How to create a list from a CSV file in c#?

简单地说,我的项目中有一个 excel CSV 文件,其中包含 table 个产品和一个产品 Class 我似乎无法提取数据以从 CSV 文件的列表中创建产品对象列表。 我意识到发布了类似的问题,但我似乎无法使其正常工作。 谁能找出问题所在?

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);
    }
}

将您的代码更改为:

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);
    }
}

您的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 开始循环,因为我想第一行将包含字幕。 但是,如果文件格式发生变化,您将不得不重写此代码,因此您可能希望自动将 link 属性添加到列。如果是这种情况,请查看 System.Reflection 库。