国产探花免费观看_亚洲丰满少妇自慰呻吟_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去賦值?

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


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 宝山区| 奎屯市| 临城县| 南阳市| 中江县| 丹江口市| 石楼县| 博罗县| 台南市| 建湖县| 如皋市| 蛟河市| 巫溪县| 中牟县| 庄河市| 资源县| 泉州市| 卢龙县| 理塘县| 聊城市| 南平市| 城市| 巢湖市| 永川市| 泸西县| 崇礼县| 台中市| 防城港市| 祁连县| 天柱县| 特克斯县| 平遥县| 高陵县| 从化市| 青浦区| 会昌县| 富宁县| 棋牌| 丘北县| 香格里拉县| 威信县|