/// <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());
        }
예제 #2
0
        /// <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());
        }