Шаблон адаптера - PullRequest
       10

Шаблон адаптера

0 голосов
/ 24 апреля 2011

У меня проблема в том, что мне нужно скопировать данные из DataTable в другую, обе имеют разную структуру, поэтому я не могу просто вызвать метод rowImport.

В моем предыдущем посте я спросил, каким будет оптимизированный способ выполнения этой работы, и мне предложили изучить шаблон адаптера?

IEnumerable<DataRow> query = from vendInv in 
  VendorInvoiceStagingTable.AsEnumerable()                                         
 where vendInv.Field<string>(VendInvoice.Number) ==    InvoiceHeader                                         
 select vendInv;      


  Object[] obj = new Object[10];            
 var item = query.First();           
  for (int idx = 0; idx < 10; idx++)   
     {              
      obj[idx] = item[idx];       
      }        
   VendorInvoiceTable.Rows.Add(obj);

Полная проблема описана по следующей ссылке:

Лучший способ скопировать данные из одной таблицы данных в другую таблицу данных с другой структурой

ВОПРОС: Как я могу решить эту проблему с помощью шаблона адаптера?

Ответы [ 2 ]

3 голосов
/ 24 апреля 2011

Я не думаю, что паттерн Адаптер может вам здесь помочь. Я предполагаю, что вы сами не решили использовать DataTable в качестве своей структуры данных, но некоторые другие обстоятельства, такие как другой компонент в вашем приложении, которое потребляет его (UI?), Заставили вас использовать его. Это означает, что эти компоненты могут только «общаться» с интерфейсом DataTable. Шаблон адаптера представляет собой промежуточный интерфейс между потребителем (клиентом) и источником (адаптером). Промежуточный интерфейс называется адаптером. Так что придерживайтесь простейшего возможного решения. Из вашего примера у меня есть ощущение, что ваше отображение является простым «преобразованием» строки 1: 1, и нет никакого смысла вводить здесь какие-либо жесткие шаблоны:)

0 голосов
/ 26 апреля 2011

А как насчет слияния?Который "Объединит указанный System.Data.DataTable с текущим System.Data.DataTable."

...