我只是想知道是否有更快或更有效的方法來將DataTable轉換爲對象?什麼是從DataTable填充簡單對象的最快方法?
我目前使用的方法是這樣的:
public class Job {
int JobID { get; set; }
decimal JobCost { get; set; }
Job(DataRow dr)
{
ID = Convert.ToInt32(dr["ID"]);
if(dr["JobCost "] != DBNull.Value)
JobCost = Convert.ToDecimal(dr["DelAmt"]);
}
}
public static List<Job> FillObjects()
{
DataTable dtJobs = JobController.GetJobTable();
foreach (DataRow dr in dtJobs.Rows)
{
jobs.Add(new Job(dr));
}
return jobs
}
這是一個明顯簡化的示例,但是這得到與數據表中的許多行和在對象許多屬性相當緩慢。有沒有更快或更有效的方法來做這樣的事情?
在此先感謝您的回覆!
想必在數據表中的項目實際上整數和小數。你應該*鑄造*他們,而不是調用'轉換'。演員陣容*操作簡單。除此之外,除了遍歷每一行,抽出每一個值並將其分配給對象的一個字段外,沒有其他選擇。 – Servy 2015-02-05 17:58:11
這些項目*主要是*整數和小數,但是在代碼中數據庫類型和變量類型之間總是沒有確切的關係。 (Disclamer:這不是我的代碼,我已經繼承了系統)。有些數據庫字段是需要轉換爲整數或日期時間的字符串等。 – user3241130 2015-02-05 18:17:18
然後,您應該真正解決該問題;將數字作爲字符串存儲在數據庫中將導致任意數量的不同類型的問題,其中之一是當然所有數據庫查詢都需要花費時間來解析所有查詢結果。 – Servy 2015-02-05 18:20:36