如何将FileHelpers与具有层次结构的记录一起使用?

时间:2016-04-06 08:38:52

标签: c# csv hierarchical-data filehelpers

我有一个这样的课程

public class Foo
{
    public string Name { get; set; }

    private List<string> _bar = new List<string>();
    public List<string> Bar
    {
        get { return _bar; }
        set { _bar = value; }
    }
}

我的.csv文件如下所示:

Foo;Bar
A;B
A;C

所以我希望有一个名为&#34的Foo对象; A&#34;和&#34; B&#34;以及&#34; B&#34;和&#34; C&#34;。

是否可以简单地使用FileHelpers解析我的.csv文件?还是其他一些图书馆?不要用第三方工具创建更复杂的解决方案(带有for循环等)。然后我将用.NET创建一个标准的解决方案。

1 个答案:

答案 0 :(得分:0)

所以你的FileHelpers类应该是这样的:

[DelimitedRecord(";")]
public class FooSpec
{
    public string Name;
    public string Bar;
}

将所有记录读入数组并使用Linq进行调整。

var engine = new FileHelperEngine<FooSpec>();
// ReadFile returns an array of Foo
var records = engine.ReadFile(filename);

var fooRecords = list
             .GroupBy(x => x.Name)
             .Select(x => 
                new Foo() { 
                  Name = x.Key, 
                  Bar = x.Select(y => y.Bar).ToList() 
                });