/// <summary> /// 将DataTable转为List /// </summary> /// <typeparam name="T">实体类(必须有默认构造参数)</typeparam> /// <param name="dt">DataTable</param> /// <returns></returns> public static List <T> ToList <T>(DataTable dt) where T : new() { List <T> list = new List <T>(); if (dt == null || dt.Rows.Count == 0) { return(list); } foreach (DataRow dr in dt.Rows) { T t = new T(); foreach (PropertyInfo prop in typeof(T).GetProperties()) { if (dr.Table.Columns.Contains(prop.Name)) { GetSetter <T>(prop)(t, dr[prop.Name]); } } list.Add(t); } return(list); }
/// <summary> /// 高性能版构造对象,速度性能显著提升 /// </summary> /// <typeparam name="T"></typeparam> /// <param name="source"></param> /// <returns></returns> public static List <T> ConvertDataTableToObject <T>(DataTable source) where T : class, new() { List <T> list = new List <T>(); Type t = typeof(T); foreach (DataRow dr in source.Rows) { T item = new T(); foreach (var prop in t.GetProperties()) { string MapperName = GetMapperName(prop); if (string.IsNullOrEmpty(MapperName)) { MapperName = prop.Name; } if (dr.Table.Columns.Contains(MapperName) && !IsDBNull(dr[MapperName])) { GetSetter <T>(prop)(item, dr[MapperName]); } } list.Add(item); } return(list); }
public static void Set <TValue>(TImplementation instance, string propertyName, TValue value) { GetSetter <TValue>(propertyName)(instance, value); }
public static void Set <TValue>(TType instance, string propertyName, TValue value) { GetSetter <TValue>(propertyName)(instance, value); }
public static ITrackingAction GetTrackingPropertyUpdateV2 <TObject, TValue>(this TObject item, TValue field, TValue value, string propertyName) => new PropertyTrackingAction <TObject, TValue>(field, value, item, (x, y) => GetSetter <TObject, TValue>(propertyName)(x, y));