亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

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

csharp:Conversion Between DataTable and List

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

csharp:Conversion Between DataTable and List

/// <summary>    /// http://www.codePRoject.com/Tips/784090/Conversion-Between-DataTable-and-List-in-Csharp     /// </summary>    public static class ExtensionUtility    {            /// <summary>        /// Converts List To DataTable        /// </summary>        /// <typeparam name="TSource"></typeparam>        /// <param name="data"></param>        /// <returns></returns>        public static DataTable ToDataTable<TSource>(this IList<TSource> data)        {            DataTable dataTable = new DataTable(typeof(TSource).Name);            PropertyInfo[] props = typeof(TSource).GetProperties(BindingFlags.Public | BindingFlags.Instance);            foreach (PropertyInfo prop in props)            {                dataTable.Columns.Add(prop.Name, Nullable.GetUnderlyingType(prop.PropertyType) ?? prop.PropertyType);            }            foreach (TSource item in data)            {                var values = new object[props.Length];                for (int i = 0; i < props.Length; i++)                {                    values[i] = props[i].GetValue(item, null);                }                dataTable.Rows.Add(values);            }            return dataTable;        }              /// <summary>        /// Converts DataTable To List        /// </summary>        /// <typeparam name="TSource"></typeparam>        /// <param name="dataTable"></param>        /// <returns></returns>        public static List<TSource> ToList<TSource>(this DataTable dataTable) where TSource : new()        {            var dataList = new List<TSource>();            const BindingFlags flags = BindingFlags.Public | BindingFlags.Instance | BindingFlags.NonPublic;            var objFieldNames = (from PropertyInfo aProp in typeof(TSource).GetProperties(flags)                                 select new { Name = aProp.Name, Type = Nullable.GetUnderlyingType(aProp.PropertyType) ?? aProp.PropertyType }).ToList();            var dataTblFieldNames = (from DataColumn aHeader in dataTable.Columns                                     select new { Name = aHeader.ColumnName, Type = aHeader.DataType }).ToList();            var commonFields = objFieldNames.Intersect(dataTblFieldNames).ToList();            foreach (DataRow dataRow in dataTable.AsEnumerable().ToList())            {                var aTSource = new TSource();                foreach (var aField in commonFields)                {                    PropertyInfo propertyInfos = aTSource.GetType().GetProperty(aField.Name);                    var value = (dataRow[aField.Name] == DBNull.Value) ? null : dataRow[aField.Name]; //if database field is nullable                    propertyInfos.SetValue(aTSource, value, null);                }                dataList.Add(aTSource);            }            return dataList;        }    }

  測試數據源:

public class Student    {        public long Id { get; set; }        public string Name { get; set; }        public short Age { get; set; }        public DateTime DateOfCreation { get; set; }        public bool? IsActive { get; set; }    }    public class Teacher    {        public long Id { get; set; }        public string Name { get; set; }        public Nullable<int> DepartmentId { get; set; }    }    public class Data    {        public static List<Student> GetStudents()        {            var list = new List<Student>            {                new Student {Id = 1, Name = "Smith", Age = 18, DateOfCreation = DateTime.Now, IsActive = true},                new Student {Id = 2, Name = "Hook", Age = 16, DateOfCreation = DateTime.Now.AddDays(-1), IsActive = true},                new Student {Id = 3, Name = "Jhon", Age = 15, DateOfCreation = DateTime.Now.AddDays(-2), IsActive = true},                new Student {Id = 4, Name = "Alan", Age = 21, DateOfCreation = DateTime.Now.AddDays(-3), IsActive = true}            };            return list;        }        public static List<Teacher> GetTeachers()        {            var list = new List<Teacher>            {                new Teacher {Id = 1, Name = "Smith", DepartmentId = 18 },                new Teacher {Id = 2, Name = "Hook", DepartmentId = 16 },                new Teacher {Id = 3, Name = "Jhon", DepartmentId = 15 },                new Teacher {Id = 4, Name = "Alan", DepartmentId = 21 }            };            return list;        }        public static DataTable DbNullInt()        {            DataTable table = new DataTable();            table.Columns.Add("Id", typeof(long));            table.Columns.Add("Name", typeof(string));            DataColumn column;            column = new DataColumn("DepartmentId", System.Type.GetType("System.Int32"));            column.AllowDBNull = true;            table.Columns.Add(column);            table.Rows.Add(1, "Smith", DBNull.Value);            table.Rows.Add(2, "Hook", 1);            return table;        }    }

  測試:

            List<Student> students = Data.GetStudents();            /*List to DataTable conversion*/            DataTable studentTbl = students.ToDataTable();            /*DataTable to List conversion*/            List<Student> newStudents = studentTbl.ToList<Student>();//ExtensionUtility.ToList<Student>(newStudents);            this.dataGridView1.DataSource = newStudents;            /*List to DataTable conversion*/            DataTable teacherTbl = Data.DbNullInt();            /*DataTable to List conversion*/            List<Teacher> newTeachers = teacherTbl.ToList<Teacher>();                       this.dataGridView2.DataSource = newTeachers;

  


上一篇:通俗版說委托

下一篇:C#串口控制

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
青青草国产精品一区二区| 欧美成人国产va精品日本一级| 91国产一区在线| 精品国产一区二区三区在线观看| 国产精品第1页| 精品亚洲一区二区三区在线观看| 中日韩午夜理伦电影免费| 午夜精品久久久久久久久久久久久| 欧美性猛交丰臀xxxxx网站| 亚洲国产精品女人久久久| 亚洲国产精品视频在线观看| 欧美日韩日本国产| 国产精品久久久久久久天堂| 亚洲成人黄色网址| 一夜七次郎国产精品亚洲| 欧美日本在线视频中文字字幕| 日本国产一区二区三区| 亚洲免费小视频| 久久影视三级福利片| 中文字幕日韩在线观看| 在线视频中文亚洲| 日韩精品在线观看网站| 亚洲美女av电影| 欧美怡红院视频一区二区三区| 黑人精品xxx一区一二区| 亚洲第一福利网站| 日韩av快播网址| 美女999久久久精品视频| 国产亚洲精品va在线观看| 最新69国产成人精品视频免费| 国产精品美女久久| 自拍偷拍亚洲区| 在线视频日本亚洲性| 3344国产精品免费看| 亚洲美女免费精品视频在线观看| 欧美电影免费观看大全| 伊人久久大香线蕉av一区二区| 亚洲国语精品自产拍在线观看| 91黄色8090| 国产精品入口夜色视频大尺度| 91po在线观看91精品国产性色| 精品久久久久久久久久久久久久| 福利二区91精品bt7086| 精品国产91久久久久久| 亚洲第一区在线| 91视频国产精品| 国产欧亚日韩视频| 欧美激情乱人伦一区| 欧美精品久久久久| 伊人一区二区三区久久精品| 色综合久久88色综合天天看泰| 美女扒开尿口让男人操亚洲视频网站| 日韩电影免费观看在线观看| 久久久极品av| 精品一区二区亚洲| 深夜福利国产精品| 精品爽片免费看久久| 欧美在线一区二区三区四| 亚洲综合精品伊人久久| 欧美猛男性生活免费| 欧美大成色www永久网站婷| 成人在线精品视频| 亚洲天堂av图片| 亚洲美女自拍视频| 成人黄色免费在线观看| 日韩精品视频免费| 国内精品400部情侣激情| 国产网站欧美日韩免费精品在线观看| 中文字幕不卡在线视频极品| 欧美中文字幕视频在线观看| 国产精品黄视频| 国产精品一区二区在线| 8090理伦午夜在线电影| 国产欧美va欧美va香蕉在线| 午夜免费在线观看精品视频| 久久色在线播放| 亚洲欧美中文字幕在线一区| 精品欧美aⅴ在线网站| 久久久久国产视频| 国产精品久久久久久久午夜| 91系列在线播放| 日本高清视频精品| 久久久视频精品| 国产午夜精品全部视频在线播放| 性欧美激情精品| 成人中文字幕在线观看| 国产在线视频不卡| 亚洲精品视频免费| 欧美精品在线看| 777精品视频| 国产一级揄自揄精品视频| 欧美日韩国产限制| 国模吧一区二区三区| 91免费看视频.| 亚洲人成电影在线观看天堂色| 中文字幕亚洲综合久久| 欧美成人sm免费视频| 亚洲日本欧美中文幕| 久久97精品久久久久久久不卡| 国产一区二区动漫| 亚洲精品乱码久久久久久按摩观| 成人免费在线视频网站| 国模精品一区二区三区色天香| 国产精品久久一区主播| 欧美性猛交xxxx偷拍洗澡| 国产一区二区三区在线看| 国产美女精彩久久| 亚洲欧美中文在线视频| 日韩av一区在线观看| 亚洲国产一区二区三区四区| 欧美日本高清一区| 国产精品一区二区久久久| 欧美日韩第一视频| 欧美日本高清视频| 日韩免费在线看| 国产综合色香蕉精品| 久久久久久久久久av| 亚洲精品成a人在线观看| 欧美激情按摩在线| 日韩高清电影好看的电视剧电影| 亚洲日韩中文字幕在线播放| 啊v视频在线一区二区三区| 91国偷自产一区二区三区的观看方式| 久久精品成人欧美大片古装| 国产精彩精品视频| 亚洲第一精品夜夜躁人人躁| 亚洲电影免费观看高清完整版在线| 日韩av手机在线看| 狠狠久久亚洲欧美专区| 欧美最猛性xxxxx亚洲精品| 亚洲黄色片网站| 国产午夜精品久久久| 亚洲精品成人久久久| 一区二区三区视频免费在线观看| 91精品视频专区| 欧美在线视频导航| 亚洲第一色在线| 日本免费一区二区三区视频观看| 久久在线免费观看视频| 久久久久久久久国产| 欧美色播在线播放| 亚洲一区二区在线| 久久久久久亚洲精品中文字幕| 日本aⅴ大伊香蕉精品视频| 欧美亚洲伦理www| 日韩视频―中文字幕| 日本久久精品视频| 午夜精品久久久久久久白皮肤| 色七七影院综合| 亚洲欧洲视频在线| 欧美亚洲国产视频| 欧美野外wwwxxx| 伊人伊成久久人综合网小说| 午夜精品免费视频| 2019亚洲日韩新视频| 日本久久亚洲电影| 国产精品欧美激情| 亚洲精品久久久久久久久| 国产极品jizzhd欧美| 综合久久五月天| 欧美高清在线观看| 亚洲免费av片| 欧美一区第一页| 亚洲美女性视频|