這不是來填充的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
@ Agarwal,沒有不工作。它給了我一個鑄造錯誤,不能隱式轉換一個匿名類型的數據表是否缺少強制轉換? – RachitSharma
剛纔我改變了我的代碼...只是檢查它可以幫助你.. –