2014-06-16 4 views
2

У меня есть сильный типизированных DataTable с именем учетной записи которым я отсортирован по Account.FullName:Преобразование Рассортировано DataView в типизированных DataTable

DataView dvAccount = new DataView(dtAccount) 
dvAccount.Sort = "FullName desc"; 

ПолноеИмя является генерируемое поле из моего DataSet после моего запроса, основанный на имени, средний, последний и т. д. Это означает, что сортировка по SQL-запросу, к сожалению, не является вариантом.

Сначала я пытался получить таблицу, как это:

dtAccount = dvAccount.Table() 

Но это дало мне оригинальный СТОЛ DataView был основан на. Таким образом, после прочтения в Интернете я узнал, что я должен использовать функцию DataView.ToTable() вместо функции DataView.Table():

dtAccount = dvAccount.ToTable() as dsAccount.AccountDataTable; // returns null 
dtAccount = ((dsAccount.AccountDataTable) dvAccount.ToTable()); // gives Convertion to Typed Datatable Error 

Теперь я получаю эту проблему, что моя учетная запись Таблицы является сильным типизированной. поэтому поиск в Интернете говорит мне, что я могу пойти с функцией DataTable.Merge() или DataTable.ImportRow() для каждой строки, но они говорят, что это очень тяжелые процедуры, потому что каждая строка проверяется на типе. Каково наилучшее решение этой ситуации?

+0

Почему вы не удаляете DataTable из DataSet и не добавляете отсортированный DataTable в DataSet. –

+0

Hi Nikhil! Спасибо за быстрый ответ. Можете ли вы привести пример или более подробное объяснение вашего совета? Я использую Asp.Net с уровнем Dataset и бизнес-слоем (Multi-Tier setup), где последнее - это то место, где я хочу делать свои сортировки, предпочтительно, так как я повторно использую свои наборы данных с запросами в нескольких местах – Jeroen

ответ

0

У меня была такая же проблема. Я использовал такое решение.

 dtAccount = New dsAccount.AccountDataTable; 
     dtAccount.Merge(dvAccount.ToTable()); 

Это прекрасно работает для меня. Скажите, если у вас есть лучший.

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