2014-06-18 35 views
0

我想記錄我得到複製匿名變量到數據表。如何能做到? 什麼我做的是從datatable1獲取記錄並將其保存在匿名變量,現在我想的是,要取出的記錄複製到datatable2。如何匿名可變數據複製到數據表在asp.net?

的代碼,我現在用的就是:

var query = from t in datatable1.AsEnumerable() 
        select new 
        { 
         Name= t.Field<string>("Name"), 
         Age = t.Field<int>("Age") 
        }; 

但是當我使用

DataTable datatable2 = new DataTable(); 
datatable2 = query.copytodatatable(); //Error here 

如何將查詢記錄datatatable2?由於

回答

0

只是嘗試做這樣的...

DataTable dt = new DataTable(); 

    dt.Columns.Add("Name", typeof(string)); 

    dt.Columns.Add("Age", typeof(int)); 

      var query = 
       from t in datatable1.AsEnumerable() 
           select new 
           { 
            Name= t.Field<string>("Name"), 
            Age = t.Field<int>("Age") 
           }; 


     dt = query.CopyToDataTable(); 


OR.. 

instead of this dt = query.CopyToDataTable(); you can use 

foreach (var item in query) 
      { 
       dt.Rows.Add(item.Name,item.Age);     
      } 
+0

@ Agarwal,沒有不工作。它給了我一個鑄造錯誤,不能隱式轉換一個匿名類型的數據表是否缺少強制轉換? – RachitSharma

+0

剛纔我改變了我的代碼...只是檢查它可以幫助你.. –

0

這不是來填充的DataTable與匿名變量的正確方法:

DataTable datatable2 = new DataTable(); 
datatable2 = query.copytodatatable(); //Error here 

要填充的DataTable使用匿名變量檢查以下代碼:

// your query 
    var query = from t in datatable1.AsEnumerable() 
         select new 
         { 
          Name= t.Field<string>("Name"), 
          Age = t.Field<int>("Age") 
         }; 

// design table first 
DataTable table = new DataTable(); 
table.Columns.Add(new DataColumn 
    { 
     ColumnName = "YourColumnName", 
     DataType = typeof(String); 
    }); 
... 

List<DataRow> list = new List<DataRow>(); 
foreach (var t in query) 
{ 
    var row = table.NewRow(); 
    row.SetField<string>("YourColumnName", t.Name); // extension method from System.Data.DataSetExtensions.dll 
    ... 

    list.Add(row); 
} 

DataTable table = list.CopyToDataTable(); // extension method too 

或更多LINQ方式:

query 
    .Select(t => 
     { 
      var row = table.NewRow(); 
      ... 
      return row; 
     }) 
    .CopyToDataTable(); 

或者在相同的查詢語法。實現方法:

static DataRow NewRow(DataRow row, string Name, ....) 
{ 
    ... 
} 

然後詢問自己:

(from ... 
where ... 
select NewRow(table.NewRow(), t.Name, ...) 
).CopyToDataTable(); 

你可以使用另一種選擇是:

呼叫.ToList() 產生的List<T>也可以被綁定到DataTable

相關問題