从 C# 中的 DBF (Visual FoxPro) 文件读取特定列
Reading specific columns from DBF (Visual FoxPro) file in C#
我一直在使用 DbfDataReader 在我的 C# 应用程序中读取 DBF 文件。到目前为止,我可以成功读取列名、列索引并遍历记录。似乎没有一种方法可以在不使用列索引的情况下读取我想要的特定列数据。例如,我可以使用如下语句获取 FIRSTNAME 值:
using DbfDataReader;
var dbfPath = "/CONTACTS.DBF";
using (var dbfTable = new DbfTable(dbfPath, EncodingProvider.UTF8))
{
var dbfRecord = new DbfRecord(dbfTable);
while (dbfTable.Read(dbfRecord))
{
Console.WriteLine(dbfRecord.Values[1].ToString()); // would prefer to use something like dbfRecord.Values["FIRSTNAME"].ToString()
Console.WriteLine(dbfRecord.Values[2].ToString()); // would prefer to use something like dbfRecord.Values["LASTNAME"].ToString()
}
}
其中 1 是 FIRSTNAME 列的索引,2 是 LASTNAME 列的索引。无论如何使用 "FIRSTNAME" (或列名)作为本质上是 name/value 对的键(或访问器)?我的目标是获取我关心的所有列,而不必每次都先构建这张地图。 (如果我使用的术语不完全正确,请原谅我)。
非常感谢您查看此内容...
使用 DbfDataReader class 如下:
var dbfPath = "/CONTACTS.DBF";
var options = new DbfDataReaderOptions
{
SkipDeletedRecords = true,
Encoding = EncodingProvider.UTF8
};
using (var dbfDataReader = new DbfDataReader.DbfDataReader(dbfPath, options))
{
while (dbfDataReader.Read())
{
Console.WriteLine(dbfDataReader["FIRSTNAME"])
Console.WriteLine(dbfDataReader["LASTNAME"])
}
}
我一直在使用 DbfDataReader 在我的 C# 应用程序中读取 DBF 文件。到目前为止,我可以成功读取列名、列索引并遍历记录。似乎没有一种方法可以在不使用列索引的情况下读取我想要的特定列数据。例如,我可以使用如下语句获取 FIRSTNAME 值:
using DbfDataReader;
var dbfPath = "/CONTACTS.DBF";
using (var dbfTable = new DbfTable(dbfPath, EncodingProvider.UTF8))
{
var dbfRecord = new DbfRecord(dbfTable);
while (dbfTable.Read(dbfRecord))
{
Console.WriteLine(dbfRecord.Values[1].ToString()); // would prefer to use something like dbfRecord.Values["FIRSTNAME"].ToString()
Console.WriteLine(dbfRecord.Values[2].ToString()); // would prefer to use something like dbfRecord.Values["LASTNAME"].ToString()
}
}
其中 1 是 FIRSTNAME 列的索引,2 是 LASTNAME 列的索引。无论如何使用 "FIRSTNAME" (或列名)作为本质上是 name/value 对的键(或访问器)?我的目标是获取我关心的所有列,而不必每次都先构建这张地图。 (如果我使用的术语不完全正确,请原谅我)。
非常感谢您查看此内容...
使用 DbfDataReader class 如下:
var dbfPath = "/CONTACTS.DBF";
var options = new DbfDataReaderOptions
{
SkipDeletedRecords = true,
Encoding = EncodingProvider.UTF8
};
using (var dbfDataReader = new DbfDataReader.DbfDataReader(dbfPath, options))
{
while (dbfDataReader.Read())
{
Console.WriteLine(dbfDataReader["FIRSTNAME"])
Console.WriteLine(dbfDataReader["LASTNAME"])
}
}