C# 如何将CSV文件读取到列表<;myClass>;?

C# 如何将CSV文件读取到列表<;myClass>;?,c#,C#,是否可以从CSV文件创建我自己的类的列表 文件(例如)看起来像: ID;NAME 1;Foo 2;Bar 然后我有一门课,比如: class MyClass { public int id { get; set; } public string name { get; set; } } 是否可以从cvs文件中生成此类的列表?也许对于某些库,您可以使用CSV解析器,例如或。如果您不想使用第三方库,可以查看内置类,该类可以这样使用: public IEnumerable<M

是否可以从CSV文件创建我自己的类的列表

文件(例如)看起来像:

ID;NAME
1;Foo
2;Bar
然后我有一门课,比如:

class MyClass
{
    public int id { get; set; }
    public string name { get; set; }
}

是否可以从cvs文件中生成此类的列表?也许对于某些库,您可以使用CSV解析器,例如或。如果您不想使用第三方库,可以查看内置类,该类可以这样使用:

public IEnumerable<MyClass> Parse(string path)
{
    using (TextFieldParser parser = new TextFieldParser(path))
    {
        parser.CommentTokens = new string[] { "#" };
        parser.SetDelimiters(new string[] { ";" });
        parser.HasFieldsEnclosedInQuotes = true;

        // Skip over header line.
        parser.ReadLine();

        while (!parser.EndOfData)
        {
            string[] fields = parser.ReadFields();
            yield return new MyClass()
            {
                id = fields[0],
                name = fields[1]
            };
        }
    }
}
public IEnumerable解析(字符串路径)
{
使用(TextFieldParser=newtextfieldparser(path))
{
parser.CommentTokens=新字符串[]{“#”};
SetDelimiters(新字符串[]{;“});
parser.HasFieldsEnclosedInQuotes=true;
//跳过标题行。
parser.ReadLine();
而(!parser.EndOfData)
{
string[]fields=parser.ReadFields();
收益返回新MyClass()
{
id=字段[0],
名称=字段[1]
};
}
}
}
然后:

List<MyClass> list = Parse("data.csv").ToList();
List List=Parse(“data.csv”).ToList();

但是,决不,请按照其他人的建议,在这里回答您的问题。

您可以使用CSV解析器,如或。如果您不想使用第三方库,可以查看内置类,该类可以这样使用:

public IEnumerable<MyClass> Parse(string path)
{
    using (TextFieldParser parser = new TextFieldParser(path))
    {
        parser.CommentTokens = new string[] { "#" };
        parser.SetDelimiters(new string[] { ";" });
        parser.HasFieldsEnclosedInQuotes = true;

        // Skip over header line.
        parser.ReadLine();

        while (!parser.EndOfData)
        {
            string[] fields = parser.ReadFields();
            yield return new MyClass()
            {
                id = fields[0],
                name = fields[1]
            };
        }
    }
}
public IEnumerable解析(字符串路径)
{
使用(TextFieldParser=newtextfieldparser(path))
{
parser.CommentTokens=新字符串[]{“#”};
SetDelimiters(新字符串[]{;“});
parser.HasFieldsEnclosedInQuotes=true;
//跳过标题行。
parser.ReadLine();
而(!parser.EndOfData)
{
string[]fields=parser.ReadFields();
收益返回新MyClass()
{
id=字段[0],
名称=字段[1]
};
}
}
}
然后:

List<MyClass> list = Parse("data.csv").ToList();
List List=Parse(“data.csv”).ToList();

但是千万不要,请按照别人的建议,在这里回答你的问题。

千万不要说千万不要。如果你知道你的文件结构,也许写一些小东西不是最糟糕的事情。你知道文件结构。它是CSV:-)
也许写一些小东西不是最坏的事情。
。引用这里的话():
你说“我知道!我就用String.Split(…”
.lol好的:)现在已经八个星期了,我也是文件助手的粉丝。然而,在FileHelpers出现之前,我自己进行了拆分和解析,这些东西仍然在运行;-)永不言败。如果你知道你的文件结构,也许写一些小东西不是最糟糕的事情。你知道文件结构。它是CSV:-)
也许写一些小东西不是最坏的事情。
。引用这里的话():
你说“我知道!我就用String.Split(…”
.lol好的:)现在已经八个星期了,我也是文件助手的粉丝。然而,在FileHelpers出现之前,我自己进行了拆分和解析,这些东西仍然在运行;-)