适配器模式

时间:2011-04-23 22:07:53

标签: c# .net design-patterns ado.net adapter

我有一个问题,我必须将数据从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);

完整问题在以下链接中描述:

Best way to copy Data from one DataTable to another DataTable with diffrent structure

问题:如何使用适配器模式解决此问题?

2 个答案:

答案 0 :(得分:3)

我不认为适配器模式可以在任何方面为您提供帮助。我的猜测是你没有自己决定使用DataTable作为你的数据结构,但是其他一些情况,比如你的applciation中的其他组件使用它(UI?)迫使你使用它。这意味着这些组件只能与DataTable接口“对话”。 适配器模式是关于消费者(客户端)和源(适配器)之间的中间接口。中间接口称为适配器。 所以坚持使用最简单的解决方案。从你的例子我觉得你的映射是简单的1:1行“转换”,这里引入任何硬核模式没有多大意义:))

答案 1 :(得分:0)

合并怎么样?这将“将指定的System.Data.DataTable与当前的System.Data.DataTable合并。”