使用linQ的CopyToDataTable時,無資料會產生「來源未包含 DataRow」的錯誤。
上網查了下有很多方式可以用,有的用Any()判斷有資料再進行CopyToDataTable,
但不知為何我Any()叫不出來,只好改將dtEmp 當CopyToDataTable的參數傳入,避免無資料時CopyToDataTable產生「來源未包含 DataRow」的錯誤。
下方為程式碼,可以參考看看。
DataTable dtEmp = new DataTable();
//將 dtEmp 當CopyToDataTable的參數傳入,避免無資料時CopyToDataTable產生「來源未包含 DataRow」的錯誤
(from e in dt_hr_employee.AsEnumerable()
where e.Field<string>("ID") == ID
select e).CopyToDataTable(dtEmp, LoadOption.PreserveChanges);
if (dtEmp.Rows.Count > 0)
{
Session.Add("ID", dtEmp.Rows[0]["ID"]);
Session.Add("department", dtEmp.Rows[0]["部門"]);
Session.Add("Cname", dtEmp.Rows[0]["中文名"]);
Session.Add("Ename", dtEmp.Rows[0]["英文名"]);
}
else {
// 無此人
lblErrMsg.Text = "User Server NG";
}