2021年5月31日 星期一

[LINQ] C# datatable query (CopyToDataTable)

 使用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";

                    }

沒有留言:

張貼留言