Пример #1
0
        public List <IViewModel> getViewModel <T>(IEnumerable <T> dbModel, Table_Type type)
            where T : class
        {
            List <IViewModel> datas = new List <IViewModel>();
            var obj = FactoryRegistry.GetInstance(type);

            if (dbModel == null || obj == null)
            {
                return(datas);
            }
            var viewpros = obj.GetType().GetProperties();

            if (!dbModel.Any())
            {
                return(datas);
            }
            var dbpros = dbModel.First().GetType().GetProperties();

            dbModel.ToList().ForEach(db =>
            {
                obj = FactoryRegistry.GetInstance(type);
                foreach (var item in viewpros)
                {
                    var p = dbpros.FirstOrDefault(x => x.Name.ToUpper() == item.Name.ToUpper());
                    if (p != null)
                    {
                        var _pt = p.PropertyType;
                        if (_pt == typeof(string))
                        {
                            item.SetValue(obj, p.GetValue(db));
                        }
                        else if (_pt == typeof(DateTime) || _pt == typeof(Nullable <DateTime>))
                        {
                            if (p.GetValue(db) != null)
                            {
                                item.SetValue(obj, TypeTransfer.objDateToString(p.GetValue(db)));
                            }
                            else
                            {
                                item.SetValue(obj, string.Empty);
                            }
                        }
                        else if (_pt == typeof(TimeSpan) || _pt == typeof(Nullable <TimeSpan>))
                        {
                            if (p.GetValue(db) != null)
                            {
                                item.SetValue(obj, TypeTransfer.objTimeSpanToString(p.GetValue(db)));
                            }
                            else
                            {
                                item.SetValue(obj, string.Empty);
                            }
                        }
                        else
                        {
                            if (p.GetValue(db) != null)
                            {
                                item.SetValue(obj, p.GetValue(db).ToString());
                            }
                            else
                            {
                                item.SetValue(obj, string.Empty);
                            }
                        }
                    }
                }
                datas.Add(obj);
            });
            return(datas);
        }