Чтение указанных c столбцов из файла DBF (Visual FoxPro) в C# - PullRequest
1 голос
/ 02 февраля 2020

Я использовал DbfDataReader для чтения файлов DBF в моем приложении C#. До сих пор я мог читать имя столбца, индекс столбца и успешно просматривать записи. Похоже, что нет способа прочитать определенные данные столбца c, которые я хотел бы, без использования индекса столбца. Например, я могу получить значение 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» (или имя столбца) в качестве ключа (или метода доступа) для того, что по сути является парой имя / значение? Моя цель - собрать все столбцы, которые мне нужны, без необходимости каждый раз создавать эту карту. (Пожалуйста, прости меня, если используемые мной термины не совсем верны).

Большое спасибо за то, что взглянули на это ...

1 Ответ

0 голосов
/ 03 февраля 2020

Используйте класс DbfDataReader, как показано ниже:

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"])
    }
}
...