重庆幸运农场中奖金额|重庆幸运农场官网
MyException - 我的異常網
當前位置:我的異常網» 綜合 » 依據反射解析和轉換DataRow

依據反射解析和轉換DataRow

www.h0f1.com  網友分享于:2015-02-11  瀏覽:0次
根據反射解析和轉換DataRow

根據反射解析和轉換DataRow。

    public class DataConvert
    {
        //獲取文件結構
        //dataRow轉T 
        public static T GetModelByDataRow<T>(System.Data.DataRow dr) where T : new()
        {
            T model = new T();
            foreach (PropertyInfo pInfo in model.GetType().GetProperties())
            {
                object val = getValueByColumnName(dr, pInfo.Name);
                pInfo.SetValue(model, val, null);
            }
            return model;
        }
        // T轉dataRow

        public static DataRow GetDataRowByModel<T>(T _t, DataTable dt)
        {
            DataRow dr = dt.NewRow();
            ArrayList tempList = new ArrayList();
            foreach (PropertyInfo pi in _t.GetType().GetProperties())
            {
                object obj = pi.GetValue(_t, null);
                tempList.Add(obj);
            }
            object[] array = tempList.ToArray();
            dr.ItemArray = array;
            return dr;
        }

        //返回DataRow 中對應的列的值。  
        public static object getValueByColumnName(System.Data.DataRow dr, string columnName)
        {
            if (dr.Table.Columns.IndexOf(columnName) >= 0)
            {
                if (dr[columnName] == DBNull.Value)
                    return null;
                return dr[columnName];
            }
            return null;
        }


        //數據轉換
        public static IList<T> readTxt2List<T>(FileInfo[] files, char charSplit, string[] defStrHeader)
        {
            IList<T> poslist = new List<T>();
            for (int j = 0; j < files.Length; j++)
            {
                FileStream fs = new FileStream(files[j].FullName, FileMode.Open, FileAccess.Read);
                StreamReader sr = new StreamReader(fs);
                string mytext = "";
                string[] sHeader;
                if (defStrHeader != null)
                {
                    sHeader = defStrHeader;
                }
                else
                {
                    sHeader = sr.ReadLine().Split(charSplit);

                }
                Dictionary<string, int> headerDic = new Dictionary<string, int>();
                for (int i = 0; i < sHeader.Length; i++)
                {
                    headerDic.Add(sHeader[i], i);

                }

                while ((mytext = sr.ReadLine()) != null)
                {
                    if (mytext.Trim() == "")
                    {
                        continue;
                    }
                    string[] sArray = mytext.Split(charSplit);
                    T _t = (T)Activator.CreateInstance(typeof(T));
                    PropertyInfo[] propertys = _t.GetType().GetProperties();
                    foreach (var pi in propertys)
                    {
                        if (headerDic.ContainsKey(pi.Name))
                        {
                            if (headerDic[pi.Name] > sArray.Length - 1)
                            {
                                continue;
                            }
                            pi.SetValue(_t, sArray[headerDic[pi.Name]], null);
                            continue;
                        }

                    }
                    poslist.Add(_t);
                }
            }
            return poslist;

        }
    }

 

文章評論

程序員都該閱讀的書
程序員都該閱讀的書
聊聊HTTPS和SSL/TLS協議
聊聊HTTPS和SSL/TLS協議
老程序員的下場
老程序員的下場
每天工作4小時的程序員
每天工作4小時的程序員
一個程序員的時間管理
一個程序員的時間管理
60個開發者不容錯過的免費資源庫
60個開發者不容錯過的免費資源庫
程序員周末都喜歡做什么?
程序員周末都喜歡做什么?
那些爭議最大的編程觀點
那些爭議最大的編程觀點
做程序猿的老婆應該注意的一些事情
做程序猿的老婆應該注意的一些事情
程序員的一天:一寸光陰一寸金
程序員的一天:一寸光陰一寸金
Web開發人員為什么越來越懶了?
Web開發人員為什么越來越懶了?
程序員應該關注的一些事兒
程序員應該關注的一些事兒
寫給自己也寫給你 自己到底該何去何從
寫給自己也寫給你 自己到底該何去何從
“懶”出效率是程序員的美德
“懶”出效率是程序員的美德
程序員眼里IE瀏覽器是什么樣的
程序員眼里IE瀏覽器是什么樣的
10個幫程序員減壓放松的網站
10個幫程序員減壓放松的網站
為啥Android手機總會越用越慢?
為啥Android手機總會越用越慢?
為什么程序員都是夜貓子
為什么程序員都是夜貓子
程序員和編碼員之間的區別
程序員和編碼員之間的區別
我是如何打敗拖延癥的
我是如何打敗拖延癥的
漫畫:程序員的工作
漫畫:程序員的工作
2013年美國開發者薪資調查報告
2013年美國開發者薪資調查報告
親愛的項目經理,我恨你
親愛的項目經理,我恨你
團隊中“技術大拿”并非越多越好
團隊中“技術大拿”并非越多越好
Web開發者需具備的8個好習慣
Web開發者需具備的8個好習慣
如何成為一名黑客
如何成為一名黑客
程序猿的崛起——Growth Hacker
程序猿的崛起——Growth Hacker
不懂技術不要對懂技術的人說這很容易實現
不懂技術不要對懂技術的人說這很容易實現
老美怎么看待阿里赴美上市
老美怎么看待阿里赴美上市
總結2014中國互聯網十大段子
總結2014中國互聯網十大段子
 程序員的樣子
程序員的樣子
Google倫敦新總部 猶如星級莊園
Google倫敦新總部 猶如星級莊園
代碼女神橫空出世
代碼女神橫空出世
“骯臟的”IT工作排行榜
“骯臟的”IT工作排行榜
什么才是優秀的用戶界面設計
什么才是優秀的用戶界面設計
我跳槽是因為他們的顯示器更大
我跳槽是因為他們的顯示器更大
Java 與 .NET 的平臺發展之爭
Java 與 .NET 的平臺發展之爭
程序員最害怕的5件事 你中招了嗎?
程序員最害怕的5件事 你中招了嗎?
5款最佳正則表達式編輯調試器
5款最佳正則表達式編輯調試器
10個調試和排錯的小建議
10個調試和排錯的小建議
看13位CEO、創始人和高管如何提高工作效率
看13位CEO、創始人和高管如何提高工作效率
我的丈夫是個程序員
我的丈夫是個程序員
程序員必看的十大電影
程序員必看的十大電影
鮮為人知的編程真相
鮮為人知的編程真相
要嫁就嫁程序猿—錢多話少死的早
要嫁就嫁程序猿—錢多話少死的早
那些性感的讓人尖叫的程序員
那些性感的讓人尖叫的程序員
十大編程算法助程序員走上高手之路
十大編程算法助程序員走上高手之路
2013年中國軟件開發者薪資調查報告
2013年中國軟件開發者薪資調查報告
如何區分一個程序員是“老手“還是“新手“?
如何區分一個程序員是“老手“還是“新手“?
軟件開發程序錯誤異常ExceptionCopyright © 2009-2015 MyException 版權所有
重庆幸运农场中奖金额 原创美女六肖图原版 官网斗牛牛棋牌下载 新疆时时玩法大全 3d投注技巧准确五线 内部人员揭秘ag录像 大乐透开奖结果彩票 极速彩票网 必中北京pk10赛车杀号计划 时时彩大小单双人工计划 重时时彩三星综合走势 腾龙分分彩计划软件手机版 牌九至尊下载链接 七乐彩胆拖中奖计算器 麻将胡牌公式图解 北京时时诀窍免费群 黑马全人工计划软件网页版