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()。
我想使用 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()。