/// <summary> /// Veri tabanındaki kayıtları istenen tipe göre liste şeklinde döndürür /// </summary> /// <typeparam name="T">Geri Dönüş Tipi</typeparam> /// <param name="rdr">Veri tabanı Datareader nesnesi</param> /// <returns></returns> public static List <T> Liste <T>(this DbDataReader rdr, ref List <string> YakalanamayanAlanlar, bool BuyukKucukHarfDuyarli = true, bool ConvertType = true) { var Kayitlar = rdr.Liste(BuyukKucukHarfDuyarli, ConvertType); var Sonuc = new List <T>(); var Propeties = typeof(T).GetProperties(); foreach (var Kayit in Kayitlar) { var model = Activator.CreateInstance <T>(); if (IsPrimitive(typeof(T))) { Sonuc.Add(Kayit[Kayit.Keys.First()]); } else { foreach (var prop in Propeties) { if (prop.GetCustomAttributes(typeof(NotMappedAttribute), false).Count() > 0) { continue; } object val; if (Kayit.TryGetValue(BuyukKucukHarfDuyarli ? prop.Name : prop.Name.ToLower(), out val)) { if (val == null) { continue; } if (ConvertType) { var Type = prop.PropertyType; if (Type.IsEnum) { Type = typeof(int); } if (Type.IsGenericType && Type.GetGenericTypeDefinition() == typeof(Nullable <>)) { //nulable tipler için tip düzeltme? } else { val = Convert.ChangeType(val, Type); } } prop.SetValue(model, val); } } } Sonuc.Add(model); } if (Kayitlar.Count.Equals(0)) { return(Sonuc); } YakalanamayanAlanlar.AddRange(Kayitlar[0].Keys.ToList().Where(x => Propeties.FirstOrDefault(y => (BuyukKucukHarfDuyarli ? y.Name : y.Name.ToLower()).Equals(x)) == null).ToArray()); return(Sonuc); }