2016-10-24 98 views
0

我擁有匿名在此列出,並試圖將其數據加載到數據表,但得到一個錯誤集合泛型列表匿名類型設置爲系統Data.IDataReader

 var empList1 = employees.Select(p => new { UserId = p.UserId, empName = p.FullName, EmpCode = p.EmployeeCode }).Distinct().ToList(); 

    DataTable dtt = new DataTable(); 
     // dtt.Load(empList1); 

嚴重性代碼說明項目文件線路抑制狀態工具 錯誤CS1503參數1:無法從'System.Collections.Generic.List <>'轉換爲'System.Data.IDataReader'

任何解決方案?

+0

你到底想達到什麼目的? – ChrisBint

+0

我有一個列表,我綁定到gridview例如: gvTest.DataSource = empList; gvTest.DataBind(); 但後來我想要導出數據到Excel – Aamir

+0

http://stackoverflow.com/questions/19404222/bind-data-in-listt-to-datagridview – ChrisBint

回答

1

DataTable.Load method預計DataReader,但你給它List<anonymoustype>。你需要使用一個循環:

DataTable dtt = new DataTable(); 
dtt.Columns.Add("UserId", typeof(System.Guid)); 
dtt.Columns.Add("FullName", typeof(string)); 
dtt.Columns.Add("EmployeeCode ", typeof(string)); 
foreach(var employee in empList1) 
    dtt.Rows.Add(employee.UserId, employee.FullName, employee.EmployeeCode); 

這是有效的,可讀的,但如果你需要一個通用的一行,你必須使用反射:Convert generic List/Enumerable to DataTable?

+0

無法將類型爲'System.Guid'的對象鍵入'System .IConvertible」。 on line:dtt.Rows.Add(employee.UserId,employee.empName,employee.EmpCode); – Aamir

+0

@ShaikhAamir:什麼是Guid,EmpCode或UserId?我編輯了我的代碼,告訴你如果'UserId'是一個'Guid'怎麼辦。 –

+0

我糾正了,但你能建議我如何打印gridview excel?在按鈕上加載頁面後 – Aamir