2017-06-20 15 views
-2

私は選択した新しいタイプを持つlinqクエリを持っています。だから私はdatatableにコピーできません。下のようにリストに変換されます。Linqで新しいクエリを選択してくださいDatatableにコピー

新しいクエリをデータテーブルにコピーするにはどうすればよいですか?

var result = (from dr1 in dtTopAllTempOld.AsEnumerable() 
          from dr2 in dtTopAllTemp.AsEnumerable() 
          where dr1.Field<string>("EVENT") == dr2.Field<string>("EVENT") && dr1.Field<int>("INST_ID") == dr2.Field<int>("INST_ID") 
          select new 
          { 
           SAMPLE_TIME = dr1.Field<DateTime>("SAMPLE_TIME"), 
           INST_ID = dr1.Field<int>("INST_ID"), 
           WAIT_CLASS = dr1.Field<string>("WAIT_CLASS"), 
           EVENT = dr1.Field<string>("EVENT"), 
           WAITS = Math.Round((dr2.Field<double>("WAITS") - dr1.Field<double>("WAITS"))/timeTopActivity) 
          }).ToList(); 
+0

今後もこのリンクをご覧ください。簡単なgoogle検索を実行してください。https://stackoverflow.com/questions/34001672/linq-convert-linq-select-to-datatable – MethodMan

+0

@doctorcesar DataTableに参加するために新しく選択する必要はありません – Slai

+0

@Slai他のアインシュタインです。列間を差し引く場合は、新しい型として新規を選択する必要があります。シンプルなGoogle検索を作成します。 –

答えて

0
var dt = new DataTable(); 
// add columns here (dt.Columns.Add("name", typeof(type)) 
foreach(var r in result){ 
    var dr = dt.NewRow(); 
    dr[0] = r.SAMPLE_TIME; 
    dr[1] = ... 
    // continue for all columns/anonymous type fields 
    dt.Rows.Add(dr); 
} 

列の数千人がある場合でも、迅速な操作でなければなりません。私は、カラムのデータ型を変更するためにこれをやらなければならない状況にいました。そのような状況では、DataTableのスキーマをクローンし、タイプを切り替えてから、同様にDataRowsを再インポートします。

関連する問題