2015-11-24 90 views
0

我的目標是正在完成連接操作,並且該查詢值必須存儲在Datatable中。LINQ to DataTable - 在Datatable問題中獲取查詢值(CopyToDataTable)

var query = from db_data1 in DBData1.AsEnumerable() 
      join cust_data1 in DBData2.AsEnumerable() 
      on db_data1.Field<string>("FULLNAME").Trim() equals 
      cust_data1.Field<string>("Name").Trim() 
      where 
      cust_data1.Field<string>("Apartment").Trim() == db_data1.Field<string>("SERVICE_APARTMENT").Trim() 
      && cust_data1.Field<string>("Name").Trim() == db_data1.Field<string>("FULLNAME").Trim() 
      select new 
       { 
        Name = db_data1.Field<string>("FULLNAME"), 
        ACCOUNT_NUMBER = db_data1.Field<string>("ACCOUNT_NUMBER") 
       }; 

      DataTable merged; 
      if (query.Any()) 
       merged = query.**CopyToDataTable**(); 
      else 
       merged = DBData1.Clone(); 

但這裏我收到錯誤在CopyToDataTable()機能的研究的是

類型「AnonymousType#1」不能在 泛型類型或方法被用作類型參數「T」 'System.Data.DataTableExtensions.CopyToDataTable(System.Collections.Generic.IEnumerable)'。 沒有從'AnonymousType#1'到 'System.Data.DataRow'的隱式引用轉換。

如何解決此問題?

回答

0

因爲你創造如果您選擇使用一個明確的目標類型與select new { }

一個類型較少序列查詢返回匿名類型的IEnumerable - 即select CustDataRow - 你就可以使用CopyToDataTable (),但爲了您的目的,這可能需要您創建一個幫助對象。

+1

剛剛意識到這確實解釋得很好[這裏](https://stackoverflow.com/questions/1253725/convert-ienumerable-to-datatable)。謝謝Rahul ^^^ –