1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
/// <summary> /// 把数据行转换为相应的实体 /// </summary> /// <typeparam name="T">实体</typeparam> /// <param name="dataRow">数据行</param> /// <returns></returns> public static T DataRowToModel<T>(DataRow dataRow) where T : new() { // 返回值容器 var model = new T(); // 例外检查 if (dataRow == null) { return model; } // Model属性 var t = model.GetType(); var properties = t.GetProperties(); // 循环赋值 foreach (var propertyInfo in properties) { // 属性名 var propertyName = propertyInfo.Name; // 检查Model属性是否存在于列名中 if (!dataRow.Table.Columns.Contains(propertyName)) { continue; } // 数据库为null时跳过 if (dataRow[propertyName] == DBNull.Value) { continue; } // 设置Model的值 propertyInfo.SetValue(model, dataRow[propertyName]); } return model; } } |