Записи не добавляются в таблицу данных в Linq Select из DbCommand.ExecuteReader - PullRequest
0 голосов
/ 14 апреля 2011

Этот код выглядит так, как будто он должен работать, на самом деле он компилируется и запускается. Однако записи из cmd.ExecuetReader() (и есть записи) не добавляются в dt, как ожидалось. Кто-нибудь видит, чего может не хватать?

DataTable dt = new DataTable();
cmd.Connection.Open();
cmd.ExecuteReader().Cast<DbDataRecord>().Cast<DataRow>().Select(r=>dt.Rows.Add(r.ItemArray));

Или есть более простой способ сделать это, используя linq, конечно:)

1 Ответ

0 голосов
/ 14 апреля 2011

Линк ленив. Он просто запускается, когда вы на самом деле получаете доступ к его данным.

Это может сработать:

cmd.Connection.Open();
var data = cmd.ExecuteReader().Cast<DbDataRecord>().Cast<DataRow>().Select(r=>r.ItemArray).ToList();

DataTable dt = new DataTable();

foreach(var d in data)
    dt.Rows.Add(d);

Вызов ToList() заставляет linq выполнить

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...