2010-05-06 4 views
2

У меня есть проект клиент-сервер (небольшой проект для компаний на C#), и у сервера есть DataSet с некоторыми таблицами (по некоторым причинам нет базы данных, поэтому мы сохраняем DataSet как XML-файл).
Когда клиенты подключаются к серверу, сервер должен отправить некоторую информацию клиенту, зависит от его привилегий, а некоторые клиенты должны добавить или Удалить из DataSet на сервере.

Я собираюсь создать новый небольшой DataSet и отправить его клиенту (как xml), но я не знаю, как создать новый DataSet с определенными таблицами и строками (я пытался использовать Linq для DataSet, но ничего не работало).

Мои вопросы: как я могу это сделать, и это хорошее решение для отправки информации клиентам? можете ли вы предложить лучший сценарий для отправки данных клиентам (я имею в виду вместо создания нового DataSet).Создание DataSet из другого DataSet

+0

Вы хотите, чтобы новый набор данных полностью или подмножество исходного набора данных? – quillbreaker

+0

Нет. Я хочу подмножество исходного DataSet –

ответ

2

Загрузите DataSet и сохраните его до нового имени. Это ваш новый набор данных. Затем вы можете загрузить его отдельно.

Как только вы это сделаете, мы предположим, что новый набор данных называется ds. Вы можете использовать ds.Tables.Remove (string) для удаления целых таблиц и ds.Tables [string] .Columns.Remove (string) для удаления отдельных столбцов. После удаления элементов таблицы, которые вам не нужны, вы можете удалить datarows с помощью ds.Tables [string] .Rows.Remove (int).

+0

Не забудьте ds.AcceptChanges() после удаления строк или они все равно будут находиться в наборе данных. – quillbreaker

+0

спасибо, что именно это я и ищу. –

0

Почему передается набор данных. Для этой цели используются веб-службы или WCF. Почему бы не передать xml напрямую, а не преобразовать его в набор данных и передать его, а затем преобразовать обратно в xml.

+0

. Проблема заключается не в передаче информации, а в том, что я нашел сложно, собирает правильную информацию из Basic DataSet. –

+2

Мне нравится переполнение стека. Если вы приедете сюда и спросите, как идти, из дерева выйдет пять человек, чтобы сказать вам, что бег - это превосходная технология, и что ходьба идет так 2008 ... и, возможно, вы хотите дождаться выхода технологии пропусков в 2011 году. – quillbreaker

1

Используйте метод DataSet.Merge (DataTable).

Например,

DataSet theDataSetToPassAround = new DataSet(); 
theDataSetToPassAround.Merge(youDataSet.Table[indexOfTheTableToPassAround]); 

Метод Merge также имеет перегрузку, которая принимает массив DataRows, если вы хотите.

1

Если вы отправляете данные пользователям для их анализа, просмотра, отправки отчетов ... тогда вы должны использовать Excel или CSV в качестве вывода. Существует несколько способов отправить данные обратно пользователю, который откроется непосредственно в Excel, который я использую в настоящее время, но это NPOI. Когда я начал использовать NPOI, я нашел много примеров при переходе от DataTable к Excel. NPOI также поддерживает несколько листов, если вы решите вывести DataSet в Excel.