2013-12-21 2 views
0

Почему мой запрос LINQ («rows») отображается как нуль, когда мне кажется, что у меня много данных («путевые точки»)?Запрос LINQ IEnumerable <Object> для IEnumerable <DataRow> Результаты: null

Я делаю вставку ~ 20k записей и вместо того, чтобы проходить через Entity Framework Я выбрал SqlBulkCopy, что, по-видимому, означает, что мне нужна дата. Я пытаюсь получить IEnumerable в IEnumberable, поскольку это единственный способ получить CopyToDataTable().

Я копировал синтаксис in this answer, и вы можете видеть в моем отладчике, что у меня много объектов в моем исходном списке, но IEnumerable равно null.

enter image description here

же код, может быть, легче читать:

IEnumerable<DataRow> rows = 
      (from w in waypoints.AsEnumerable() 
      select w) as IEnumerable<DataRow>; 

    DataTable table = rows.CopyToDataTable(); 

Переменные "строка" возвращаются в нуле.

ответ

3

Вы пытаетесь typecase в IEnumerable<Waypoint> как IEnumerable<DataRow>, который не будет работать, если ваш Waypoint класс является производным от DataRow, который я предполагаю, что это не так. documentation for the CopyToDataTable method довольно ясно:

Параметр T источника входного параметра может быть только типа DataRow или типа, полученного из DataRow.

Вам, к сожалению, предстоит сделать вашу таблицу данных длинным путем. Сделайте новый пробел DataTable, добавьте столбцы в его коллекцию Columns, затем добавьте строки к его коллекции Rows.

+0

спасибо Майкл. иногда я должен напоминать себе, что если это будет легко, мы все будем безработными. – radpin

Смежные вопросы