예제 #1
0
파일: Linq.cs 프로젝트: Jon2G/Xamarin.Tools
        public static DataTable ToTable <T>(this IEnumerable <T> lista)
        {
            Type type = null;

            if (lista.Any())
            {
                type = lista.First().GetType();
            }
            else
            {
                type = typeof(T);
            }
            TableMapping map  = new Kit.Sql.Sqlite.TableMapping(type);
            DataTable    data = new DataTable(map.TableName);

            foreach (Column col in map.Columns)
            {
                data.Columns.Add(col.Name, col.ColumnType);
            }
            foreach (T v in lista)
            {
                List <object> valores = new List <object>();
                foreach (var column in map.Columns)
                {
                    valores.Add(column.GetValue(v));
                }
                data.Rows.Add(valores.ToArray());
            }
            return(data);
        }
예제 #2
0
파일: Linq.cs 프로젝트: Jon2G/Xamarin.Tools
        public static DataTable ToTable <T>(this T obj, params Expression <Func <T, dynamic> >[] propertyExpressions)
        {
            TableMapping map  = new Kit.Sql.Sqlite.TableMapping(typeof(T));
            DataTable    data = new DataTable(map.TableName);

            foreach (var propertyExpression in propertyExpressions)
            {
                MemberExpression body = propertyExpression.Body as MemberExpression;
                if (body == null)
                {
                    throw new ArgumentException("'propertyExpression' should be a member expression");
                }
                data.Columns.Add(body.Member.Name, body.Type);
            }

            List <object> valores = new List <object>();

            if (obj is null)
            {
                return(data);
            }
            foreach (var propertyExpression in propertyExpressions)
            {
                MemberExpression body = propertyExpression.Body as MemberExpression;
                var column            = map.Columns.First(x => x.PropertyName == body.Member.Name);
                valores.Add(column.GetValue(obj));
            }
            data.Rows.Add(valores.ToArray());

            return(data);
        }
예제 #3
0
파일: Linq.cs 프로젝트: Jon2G/Xamarin.Tools
        public static DataTable ToTable <T>(this T obj)
        {
            TableMapping map  = new Kit.Sql.Sqlite.TableMapping(typeof(T));
            DataTable    data = new DataTable(map.TableName);

            foreach (var col in map.Columns.Where(x => x.ColumnType.IsPrimitive()))
            {
                data.Columns.Add(col.Name, col.ColumnType);
            }

            List <object> valores = new List <object>();

            if (obj is null)
            {
                return(data);
            }
            foreach (var column in map.Columns)
            {
                valores.Add(column.GetValue(obj));
            }
            data.Rows.Add(valores.ToArray());

            return(data);
        }