2012-05-16 45 views
9

Sorguyu LinQ kullanarak yazdım ve CopyToDataTable yöntemini kullandık. Bu satırda veritabanı türümden örtük bir dönüşüm türü hatası gösteriliyor System.Data.DataRow.DataTable için IQueryable dönüştürme

var query = from i in dbContext.Personaldetails 
      where i.ID == 1 
      select i; 

      return query.CopyToDataTable(); 

Herhangi bir öneriniz var mı?

cevap

5

CopyToDataTableDataRow nesnelerin koleksiyonunu gerektirir. Bu sorunu çözmek için bkz: Nasıl yapılır: Implement CopyToDataTable Where the Generic Type T Is Not a DataRow.

GÜNCELLEME: senin varlık null alanı varsa, ObjectShredder.ExtendTable yöntemini değiştirebilirsiniz. (DataColumn sınıfı null veri türlerini desteklemez) sütununda yer alan verilerin türünü sağlar ikinci parametre, yeni sütunlar tabloya eklenir yer bulun ve kaldırmak:

foreach (PropertyInfo p in type.GetProperties()) 
{ 
    if (!_ordinalMap.ContainsKey(p.Name)) 
    { 
     DataColumn dc = table.Columns.Contains(p.Name) ? table.Columns[p.Name] 
      // do not provide column type 
      : table.Columns.Add(p.Name); 

     _ordinalMap.Add(p.Name, dc.Ordinal); 
    } 
} 
+0

Ben ancak query.copytodatatable o mantığı uygulayan örtük dönüşüm türünü kullanamayan bir hata gösteriyor. – steve

+0

@nanicharan, 'CustomLINQtoDataSetMethods' kullandığınızdan, LINQ veri kümesinden veri kümelerine kullanmadığınızdan emin olun. –

+0

Aynı yöntemi kullandım.Tüm kodumu göndereceğim. Lütfen bir kez kontrol edin. – steve