前一篇有学习过《http://www.cnblogs.com/insus/p/8043173.html
那此篇,将是学习反向,把DataTable转换为List<T>。这个方法使用的较多。很多情况之后,从数据读出来的数据是DataSet或是DataTable。需要把它们转换为List<T>之后,再转换为json。
public static List<T> ToList<T>(this DataTable dt) { var dataColumn = dt.Columns.Cast<DataColumn>().Select(c => c.ColumnName).ToList(); var properties = typeof(T).GetProperties(); string columnName = string.Empty; return dt.AsEnumerable().Select(row => { var t = Activator.CreateInstance<T>(); foreach (var p in properties) { columnName = p.Name; if (dataColumn.Contains(columnName)) { if (!p.CanWrite) continue; object value = row[columnName]; Type type = p.PropertyType; if (value != DBNull.Value) { p.SetValue(t, Convert.ChangeType(value, type), null); } } } return t; }).ToList(); }