62,271
社区成员
发帖
与我相关
我的任务
分享
public static List<T> DataTable2List<T>(DataTable dt) where T : new()
{
var list = Enumerable.Range(1, dt.Rows.Count).Select(i => new T()).ToList();
var columns = dt.Columns.Cast<DataColumn>().ToList();
var properties = TypeDescriptor.GetProperties(typeof(T)).Cast<PropertyDescriptor>();
columns.ForEach(col =>
{
var property = properties.FirstOrDefault(p => p.Name.Equals(col.ColumnName, StringComparison.OrdinalIgnoreCase));
if (property != null)
for (int i = 0; i < dt.Rows.Count; i++)
property.SetValue(list[i], Convert.ChangeType(dt.Rows[i][col], property.PropertyType));
});
return list;
}
var tbl = new DataTable();
var result = tbl.DefaultView
.OfType<DataRow>()
.Select(row => new Person(){ Name=(string)row["姓名"], Dept=(Department)row["部门"]})
.ToList();var tbl = new DataTable();
var result = tbl.DefaultView
.OfType<>(DataRow)
.Select(row => new Person(){ Name=(string)row["姓名"], Dept=(Department)row[["部门"]})
.ToList();public IList<T> DataSetToIList<T>(DataSet datas){...}
赞P哥的linq,不滥用反射