Example #1
0
        public static List <T> toList <T>(this System.Data.DataTable dt, DataFieldMappings df)
        {
            try
            {
                // const BindingFlags flags = BindingFlags.Public | BindingFlags.Instance;
                var columnNames = dt.Columns.Cast <DataColumn>()
                                  .Select(c => c.ColumnName)
                                  .ToList();
                var ints             = Activator.CreateInstance <T>();
                var objectProperties = GetAllProperties(typeof(T));
                var targetList       = dt.AsEnumerable().Select(dataRow =>
                {
                    var instanceOfT = Activator.CreateInstance <T>();
                    // foreach (var properties in objectProperties.Where(properties => columnNames.Contains(properties.Name) && dataRow[properties.Name] != DBNull.Value))
                    foreach (DataFieldMapping d in df.GetMapping())
                    {
                        if (dt.Columns.Contains(d.DataField))
                        {
                            var property = objectProperties.Where(
                                properties => properties.Name == d.MemberField && dataRow[d.DataField] != DBNull.Value
                                );
                            if (property.Count() > 0)
                            {
                                var pt = property.FirstOrDefault();
                                pt.SetValue(instanceOfT, dataRow[d.DataField], null);
                            }
                        }
                    }
                    return(instanceOfT);
                }).ToList();

                return(targetList.ToList <T>());
            }
            catch (System.Exception e)
            {
                throw new System.Exception(e.Message, e.InnerException);
            }
        }
Example #2
0
        public static List <T> toList <T>(this System.Data.DataTable dt, DataFieldMappings df, Func <T, T> Bind,
                                          Func <string, string, dynamic> format)
        {
            try
            {
                //  const BindingFlags flags = BindingFlags.Public | BindingFlags.Instance;
                var columnNames = dt.Columns.Cast <DataColumn>()
                                  .Select(c => c.ColumnName)
                                  .ToList();
                var ints             = Activator.CreateInstance <T>();
                var objectProperties = GetAllProperties(typeof(T));
                var targetList       = dt.AsEnumerable().Select(dataRow =>
                {
                    var instanceOfT = Activator.CreateInstance <T>();
                    // foreach (var properties in objectProperties.Where(properties => columnNames.Contains(properties.Name) && dataRow[properties.Name] != DBNull.Value))
                    foreach (DataFieldMapping d in df.GetMapping())
                    {
                        if (dt.Columns.Contains(d.DataField))
                        {
                            var property = objectProperties.Where(
                                properties => properties.Name == d.MemberField && dataRow[d.DataField] != DBNull.Value
                                );
                            if (property.Count() > 0)
                            {
                                var pt = property.FirstOrDefault();
                                if (d.IsKey == false)
                                {
                                    if (pt.PropertyType.Name == "Boolean")
                                    {
                                        if (dataRow[d.DataField] == null)
                                        {
                                            pt.SetValue(instanceOfT, false, null);
                                        }
                                        else
                                        {
                                            pt.SetValue(instanceOfT, Convert.ToBoolean(dataRow[d.DataField]), null);
                                        }
                                    }
                                    else
                                    {
                                        if ((((pt).PropertyType).BaseType).FullName == "System.Enum")
                                        {
                                            pt.SetValue(instanceOfT, format(d.DataField, dataRow[d.DataField].ToString()), null);
                                        }
                                        else if ((((pt).PropertyType).BaseType).FullName == "System.ValueType")
                                        {
                                            pt.SetValue(instanceOfT, Cast(dataRow[d.DataField], (((pt).PropertyType))), null);
                                        }
                                        else
                                        {
                                            pt.SetValue(instanceOfT, dataRow[d.DataField], null);
                                        }
                                    }
                                }
                                else
                                {
                                    FieldInfo nameField = pt.GetBackingField();
                                    nameField.SetValue(instanceOfT, dataRow[d.DataField]);
                                }
                            }
                        }
                    }
                    if (Bind is null)
                    {
                    }
                    else
                    {
                        instanceOfT = Bind(instanceOfT);
                    }
                    return(instanceOfT);
                }).ToList();

                return(targetList.ToList <T>());
            }
            catch (System.Exception e)
            {
                throw new System.Exception(e.Message, e.InnerException);
            }
        }