Добавление данных в исключение набора данных - PullRequest
0 голосов
/ 18 февраля 2011
DataSet ds = DAL.GetData();
DataSet dsInvitee = null;

DataTable dt = ds.Tables[0].Copy();
IEnumerable<DataRow> q1 = dt.AsEnumerable().Skip(5).Take(10);

dsInvitee = new DataSet();

DataTable dtNew = new DataTable();
dtNew.TableName = "DTInv";
dtNew = q1.CopyToDataTable<DataRow>();
dsInvitee.Tables.Add(dtNew.Copy());
dsInvitee.AcceptChanges();

dtNew = null;
dtNew = new DataTable();
dtNew.TableName = "DTTags";
dtNew = ds.Tables[1].Copy();
dsInvitee.Tables.Add(dtNew.Copy());

Я получаю сообщение об ошибке в последней строке, так как «Таблица данных с именем« Table1 »уже принадлежит этому набору данных». ... Пожалуйста, помогите.

Ответы [ 3 ]

2 голосов
/ 18 февраля 2011

Ваша проблема из-за строки dtNew = q1.CopyToDataTable<DataRow>();, потому что метод расширения CopyToDataTable:

Возвращает DataTable, который содержит копии объектов DataRow, учитываявходной IEnumerable объект, где универсальным параметром T является DataRow.

Это означает, что имя таблицы "DTInv" будет удалено, так как после вызова CopyToDataTable dtNew больше не ссылается на тот же DataTable.Переместите dtNew.TableName = "DTInv"; на после вызова на CopyToDataTable:

DataTable dtNew = new DataTable();
dtNew = q1.CopyToDataTable<DataRow>();
dtNew.TableName = "DTInv";
dsInvitee.Tables.Add(dtNew.Copy());
dsInvitee.AcceptChanges();
1 голос
/ 18 февраля 2011

Исходя из сказанного Даниэлем выше, попробуйте поменять местами порядок

dtNew.TableName = "DTTags";

и

dtNew = ds.Tables[1].Copy();

строк вокруг.

1 голос
/ 18 февраля 2011

Я думаю, что проблема со вторым до последнего ряда. Вы перезаписываете экземпляр dtNew. Все, что вы сделали с этим экземпляром, потеряно, и ему назначена таблица из исходного набора данных, и это то, что вы добавляете к набору данных в последней строке ...

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