国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

【小知識】DataTable 轉 List -----------點滴之水,匯涓涓細流,成汪洋大海

2019-11-17 02:05:59
字體:
來源:轉載
供稿:網友

【小知識】DataTable 轉 List -----------點滴之水,匯涓涓細流,成汪洋大海

在大部分時候我們從ADO中得到的數據都是DataTable、DataSet數據源,然而有強迫癥的同學老是喜歡折騰,硬是要把它轉換為實體集合,說是DataTable效率差云云,于是乎收到了同化。

必要信息

1,數據實體

public class UserInfo    {        public int ID { get; set; }        public string name { get; set; }    }

2,數據源(想象成從庫中得到的數據)

DataTable dt = new DataTable();            dt.Columns.Add(new DataColumn("ID", typeof(int)));            dt.Columns.Add(new DataColumn("name", typeof(string)));            for (int i = 0; i < 10; i++)            {                DataRow dr = dt.NewRow();                dr["ID"] = i.ToString();                dr["name"] = "name" + i.ToString();                dt.Rows.Add(dr);            }

轉換核心

轉換的核心很簡單,傳入獲取到的數據源與一個Func<DataRow, UserInfo>委托即可

public List<T> DtToList<T>(DataTable dt, Func<DataRow, T> fun)        {            List<T> list = new List<T>();            foreach (DataRow dr in dt.Rows)            {                list.Add(fun(dr));            }            return list;        }

在調用時只需要構建一個Func<DataRow, UserInfo>委托

Func<DataRow, UserInfo> fun = x => new UserInfo()            {                ID = Convert.ToInt32(x["ID"]),                name = x["name"].ToString()            };

調用

var list = DtToList<UserInfo>(dt, fun);

自嘲

或許有人會說,你這樣轉換無非是吧原先底層的轉換換了個位置嘛。

確實,只是換了個位置。但是,有很多同學在做ORM的轉換時通過反射或者Emit去賦值?

試想下,如果我們為一些特定的類編寫一個轉換的委托,讓后以上述形式去給實體賦值,這豈不快哉?


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 安陆市| 军事| 手机| 错那县| 辉县市| 海阳市| 龙口市| 上杭县| 双鸭山市| 哈密市| 宁晋县| 开封县| 汉川市| 都安| 甘德县| 泾川县| 巨鹿县| 拜城县| 松潘县| 江山市| 额敏县| 杭锦后旗| 大安市| 白玉县| 洞头县| 大新县| 临沧市| 花莲县| 瑞安市| 通辽市| 安岳县| 瑞昌市| 绥芬河市| 清水县| 璧山县| 班玛县| 容城县| 建昌县| 南安市| 林州市| 什邡市|