2012-05-16 104 views
9

LinQを使用してクエリを書きましたが、CopyToDataTableメソッドを使用しました。その行では、データベースタイプから暗黙の変換タイプエラーがSystem.Data.DataRowに表示されています。IQueryableをDataTableに変換する方法

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

      return query.CopyToDataTable(); 

答えて

5

CopyToDataTableは、DataRowオブジェクトの収集が必要です。この問題を解決するには方法:Implement CopyToDataTable Where the Generic Type T Is Not a DataRowを参照してください。

更新:エンティティにnull可能フィールドがある場合は、ObjectShredder.ExtendTableメソッドを変更できます。 (のDataColumnクラスがNULL可能なデータ型をサポートしていません)列のデータの種類を提供して二番目のパラメータを、新しい列がテーブルに追加されている場所を検索し、削除します。

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

私はしかしquery.copytodatatableでそのロジックを実装しています暗黙の変換タイプではないエラーが表示されています。 – steve

+0

@nanicharan LINQからデータセットへの接続ではなく、 'CustomLINQtoDataSetMethods'を必ず使用してください。 –

+0

私は同じメソッドを使用しました。私は私のコードを送信します。あなたは一度それをチェックしてください。 – steve