Чтение текстового файла с фиксированным форматом - часть 3 - PullRequest
0 голосов
/ 03 февраля 2012

Итак, я недавно задал следующие вопросы:

Чтение текстового файла с фиксированным форматом - часть 2
Чтение текстового файла фиксированного формата

Я наконец смог прочитать базу данных доступа, используя следующий код:

string DATABASE_PROVIDER = "Provider=Microsoft.ACE.OLEDB.12.0";
string CVS Application.StartupPath + ""\\Database.accdb";
string DATA_SOURCE = "Data Source" + CVS;
string connectionString = DATABASE_PROVIDER + DATA_SOURCE;
string TABLE = " FROM STUFF";
string SELECT = "SELECT CODE, NAME, ICON, FUNCTION;
string StringQueryCmd = SELECT + TABLE;

OleDbConnection MyConnection = new OleDbConnection(connectionString);
OleDbCommand Command = OleDbCommand(StringQueryCmd,MyConnection);
OleDbAdapter MyDataAdapter = new OleDbAdapter(Command);
DataSet MyDataSet = new DataSet();
DataTable MyDataTable = new DataTable();
MyConnection.Open();
MyDataAdapter.Fill(MyDataSet,"STUFF");
MyConnection.Close();

Я пытаюсь использовать LINQ to DATASET, используя следующий блок кода:

var query = (
from order in MyDataTable.AsEnumerable()
where order.Field<int>("CODE") >= 41
select new
{
CODE = order.Field<int>("CODE"),
NAME = order.Field<string>("NAME"),
ICON = order.Field<string>("ICON"),
FUNCTION = order.Field<string>("FUNCTION")    
}
);

Результат запроса не возвращает результатов, я должен получить тысячи результатов, есть ли какие-либо принципиальные ошибки в моем запросе? Есть ли другой способ генерирования результата, который ограничивает информацию из DataTable?

Мне нужно предоставить запросу (или другому решению) регулярное выражение, соответствующее столбцу "ИМЯ", и получить только несколько результатов. Я попытаюсь использовать возможность для регулярного выражения сопоставлять (что является логическим выражением) каждое имя.

1 Ответ

2 голосов
/ 03 февраля 2012

Вы не инициализировали MyDataTable данными после создания, вы заполнили набор данных, но не таблицу данных. Так что просто попробуйте MyDataSet.Tables[0] вместо MyDataTable.AsEnumerable()

// DataSet filled in but data table still empty!
MyDataAdapter.Fill(MyDataSet,"STUFF"); 
...