2013-02-08 3 views
1

У меня есть набор данных, содержащий некоторые типы данных, теперь я хочу получить datatable из db и добавить его в существующий datatable в наборе данных, который я использую ниже линииНевозможно неявно преобразовать тип 'System.Data.DataTable' в DataSets.General.StudentDataTable '

return (DataSets.General.StudentDataTable) ds.Tables["DSDummy"]; 

Но его дает мне следующее сообщение об ошибке

не может неявно преобразовать тип 'System.Data.DataTable' в DataSets.General.StudentDataTable». Явное преобразование существует

Может кто-нибудь, пожалуйста, скажите, как это сделать? любая помощь будет оценена

Благодаря

+0

Является ли 'ds.Tables [" DSDummy "]' фактически строго типизированным DataTable типа 'DataSets.General.StudentDataTable'? –

+0

Я бы не ожидал, что эта строка кода создаст ошибку компиляции. Каков тип возвращаемого метода? – JLRishe

+0

Тип возврата моего метода - «DataSets.General.StudentDataTable», а DSDummy - строго типизированный тип данных. он не дает какой-либо ошибки времени компиляции, но дает исключение, например «Невозможно выполнить листинг и т. д. и т. д.». –

ответ

2

Если ds является строго типизированным набором данных, я бы ожидать, что она имеет явное свойство для таблицы DSDummy, что-то вроде ds.DSDummy, а не через Tables коллекции, которая обходит строгую типизацию.

Однако, как бы то ни было, явное литье должно сработало. Возможно ли, что у вас есть DataSets.General.StudentDataTable, определенный более одного раза - один раз вручную и один раз автоматически из генератора DataSet - и это противоречиво?

1

Отъезд MSDN documentation

Ниже код был взят из приведенной выше ссылке.

DataSet customerOrders = new DataSet("CustomerOrders"); 

DataTable ordersTable = customerOrders.Tables.Add("Orders"); 

DataColumn pkOrderID = 
ordersTable.Columns.Add("OrderID", typeof(Int32)); 
ordersTable.Columns.Add("OrderQuantity", typeof(Int32)); 
ordersTable.Columns.Add("CompanyName", typeof(string)); 

ordersTable.PrimaryKey = new DataColumn[] { pkOrderID }; 
+0

Спасибо, Джероми, за исправление ссылки. –

1

Если вы пытаетесь загрузить один DataTable в другую, вы можете использовать метод DataTable.Merge:

DataSets.General.StudentDataTable.Merge(ds.Tables["DSDummy"]); 
0

Попробуйте, как показано ниже ... может быть, это поможет вам ...

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

DataSet ds = new DataSet(); 
ds = GetData(); 

public dataset Sample GetData() 
{ 
...... 
....... 

return ds 
} 

Если вы хотите вернуть Datatable и назначить его в Dataset, выполните следующий метод.

DataSet ds = new DataSet(); 
ds.Tables.Add(GetData()); 


public datatable Sample GetData() 
{ 
...... 
....... 

return ds.Tables["DSDummy"]; 
} 
+0

@ Дата проголосовавшего Лицо: Можете ли вы дать мне причину downVoted ...? – Pandian

+0

Ну, не только вы не отвечаете на вопрос, ваши образцы кода являются очень наполнителем, содержащим в основном код, который находится в OP. –

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