/// <summary> /// 检查列;获取DataTable有列的属性集合 /// </summary> /// <param name="dt">DataTable</param> /// <param name="Properties">属性集合</param> /// <returns>有列的属性集合</returns> private static MapColumn[] CheckProperty(DataTable dt, PropertyInfo[] Properties) { List <MapColumn> lst = new List <MapColumn>(Properties.Length); foreach (var property in Properties) { string colName = property.Name; NoColumnAttribute noColumn = property.GetCustomAttribute <NoColumnAttribute>(); if (noColumn != null) { continue; } DataFieldAttribute aliasAttr = property.GetCustomAttribute <DataFieldAttribute>(); if (aliasAttr != null) { colName = aliasAttr.ColumnName; } if (dt.Columns.Contains(colName)) { MapColumn column = new MapColumn() { ColumnName = colName, Property = property }; lst.Add(column); } } return(lst.ToArray()); }
/// <summary> /// 检查列,获取DataTable有列的属性集合 /// </summary> /// <param name="dt">DataTable</param> /// <param name="Properties">属性集合</param> /// <returns>有列的属性集合</returns> private static MapColumn[] CheckProperty(DataTable dt, PropertyInfo[] Properties, bool ignore) { List <MapColumn> lst = new List <MapColumn>(Properties.Length); Dictionary <string, string> dicCols = new Dictionary <string, string>(); Dictionary <string, string> dicType = new Dictionary <string, string>(); //遍历列 foreach (DataColumn col in dt.Columns) { dicCols[col.ColumnName.ToLower()] = col.ColumnName; dicType[col.ColumnName] = col.DataType.Name; } foreach (var property in Properties) { if (!property.CanWrite) { continue;//去除只读属性 } string colName = property.Name; NoColumnAttribute noColumn = property.GetCustomAttribute <NoColumnAttribute>(); if (noColumn != null) { continue; } DataFieldAttribute aliasAttr = property.GetCustomAttribute <DataFieldAttribute>(); if (aliasAttr != null) { colName = aliasAttr.ColumnName; } if (ignore) { if (dicCols.ContainsKey(colName.ToLower())) { MapColumn column = new MapColumn() { ColumnName = dicCols[colName.ToLower()], Property = property }; column.ColType = dicType[column.ColumnName]; lst.Add(column); } } else { if (dicType.ContainsKey(colName)) { MapColumn column = new MapColumn() { ColumnName = colName, Property = property }; column.ColType = dt.Columns[colName].DataType.Name; lst.Add(column); } } } return(lst.ToArray()); }