CSV 到 C# FileHelpers

CSV to C# FileHelpers

我想使用 FileHelpers 将极其基本的 CSV 文件读入 C#。

我有一个 Model 看起来像这样;

[DelimitedRecord(",")]
[IgnoreFirst()]
public class NavigationButton
{
    public int ID;
    public string Text;
    public string Path;
}

CSV 文件如下所示;

我希望能够读取适当的行并为从 CSV 文件中读取的每条记录创建一个新的 NavigationButton。我已将它们读入 DataTable using;

public DataTable GetNavigationButtonNames()
{
    var filename = @"C:\Desktop\NavigationButtons.csv";
    var engine = new FileHelperEngine(typeof(NavigationButton));
    return engine.ReadFileAsDT(filename);
}

但我现在无法遍历 DataTable,因为它没有实现 IEnumerable。我会在 foreach 循环中创建一个新的 NavigationButton 并添加到适当的行中,但是这不能像我开始的那样完成。

如何更改此方法以便循环遍历从 CSV 文件读入的对象并为 CSV 文件中的每一行创建一个新按钮?

这个怎么样:

List<NavigationButton> buttons = new List<NavigationButton>();
DataTable dt = GetNavigationButtonNames();

foreach (DataRow dr in dt.Rows)
{
    buttons.Add(new NavigationButton 
    { 
        ID = int.Parse(dr["id"]), 
        Text = dr["Text"].ToString(), 
        Path = dr["Path"].ToString() });
    });
}

改用 FileHelperEngine<T> 的通用版本,然后您可以:

var filename = @"C:\Desktop\NavigationButtons.csv";
var engine = new FileHelperEngine<NavigationButton>();
// ReadFile returns an array of NavigationButton
var records = engine.ReadFile(filename);
// then you can do your foreach or just get the button names with LINQ
return records.Select(x => x.Text);

ReadFile() is here 的文档。

或者如果您愿意,还有ReadFileAsList()