當DataTable的資料列太多時,使用 DataTable.Select() 來篩選資料的速度很慢,
此時可以改用 LINQ,速度上至少快上 10 倍之多
DataTable dt = GetDataTable(); ← 取得資料
// 假設 dt 的欄位 (ID<int>, FirstName<string>, LastName<string>)
// 使用 Select 方法時
DataRow[] = dt.Select("FirstName = 'xxx'");
// 使用 LINQ 方法時
var q = from p in dt.AsEnumerable()
where p.Field<string>("FirstName").ToString() == "xxx"
select p;
q 可能會找不到資料,
出現下列錯誤
System.InvalidOperationException: 來源未包含 DataRow。
於 System.Data.DataTableExtensions.LoadTableFromEnumerable[T](IEnumerable`1 source, DataTable table, Nullable`1 options, FillErrorEventHandler errorHandler)
於 System.Data.DataTableExtensions.CopyToDataTable[T](IEnumerable`1 source)
所以如果要將 q 轉換為 DataTable,
需先判斷 q.Count() 是否為 0
if (q.Count() > 0)
q.CopyToDataTable()
沒有留言:
張貼留言