【问题标题】:C# Adding CSV to a listC# 将 CSV 添加到列表中
【发布时间】:2018-03-21 15:11:03
【问题描述】:

我尝试将包含的 csv 文件添加到新列表中。这是一个不同类型的人的列表,具有功能、矩阵、姓氏、名字和性别等特征。所以我设法读取了文件,但我真的不知道如何处理将文件的包含添加到我的列表中。这是我的代码:

  `private static void ReadTest() 
    {
        int count = 0;
        string line;
        Char c = ';';

        StreamReader file= new StreamReader("Listing.csv");

        while ((line= file.ReadLine()) != null)
        {
            String[] substrings = line.Split(c);

            foreach (var substring in substrings)
            {
                Console.WriteLine(substring);
            }

            count++;
        }

        fichier.Close();
        System.Console.WriteLine("Number of lines : {0}.", count);
    }
    static void Main(string[] args)
    {
        List<Personnel> Workers = new List<Personnel>();

    }

'

【问题讨论】:

  • 如果你的循环中的“line”是一个人,并且有逗号分隔的属性,那么你就完成了 99%。将属性解析为新的 Personnel 对象,然后将该对象添加到 List,或者将“line”添加到 List 并从阅读器返回。然后,您可以用不同的方法将“行”集合解析为 Personnel。您的代码中缺少的只是 List 来存储您从文件中读取的值。
  • 是的,看来你现在需要做的就是拆分后基本上是Personnel p = new Personnel(),然后填写p.LName = substrings[0]、p.FName = substrings[1]等属性...最后添加p你的清单。您只需要将列映射到正确的属性。

标签: c# list csv


【解决方案1】:

为什么不用CSVHelper,就这么简单:

var csv = new CsvReader( textReader );
var records = csv.GetRecords<Personnel>();
//then loop through
foreach( var record in records )
{

}

你只需要安装 nuget 包:

Install-Package CsvHelper

查看this了解更多信息。

【讨论】:

  • 这是一个学校项目,我有一些限制,包括不使用 CsvHelper
【解决方案2】:

将 foreach 循环替换为以下内容:

var person = new Personnel(); 
person.firstname = substrings[0];
person.lastname = substrings[1]; 
person.function = substrings[2]; 
//continue until all variables assigned. 
Workers.Add(person); 

另外,如果 Workers 列表不是静态列表,则让 ReadTest 返回一个 List 并在函数内创建一个列表。

像这样:

private static List<Personnel> ReadTest() 
{
    int count = 0;
    string line;
    Char c = ';';

    StreamReader file= new StreamReader("Listing.csv");
    var Workers = new List<Personnel>();

    while ((line= file.ReadLine()) != null)
    {
        String[] substrings = line.Split(c);

        var person = new Personnel(); 
        person.firstname = substrings[0];
        person.lastname = substrings[1]; 
        person.function = substrings[2]; 
        //continue until all variables assigned. 
        Workers.Add(person); 

        count++;
    }

    file.Close();
    System.Console.WriteLine("Number of lines : {0}.", count);
    return Workers; 
}
static void Main(string[] args)
{
    List<Personnel> Workers = ReadTest();

}

【讨论】:

  • 非常感谢,但我还有一个问题。要添加的特征之一是枚举类型,那么如何使其与子字符串对应?
  • 这是一个关于如何从字符串中查找枚举的 SO:stackoverflow.com/questions/11508865/…
猜你喜欢
  • 2011-05-31
  • 1970-01-01
  • 2019-07-01
  • 2016-01-18
  • 2012-04-23
  • 2019-06-12
  • 1970-01-01
  • 2019-06-13
  • 1970-01-01
相关资源
最近更新 更多