internal static Task <Dictionary <K, V> > DictionaryAsync <K, V>(this IDataReader reader, IOrmLiteDialectProvider dialectProvider, CancellationToken token) { var map = new Dictionary <K, V>(); return(dialectProvider.ReaderEach(reader, () => { var key = (K)dialectProvider.ConvertDbValue(reader.GetValue(0), typeof(K)); var value = (V)dialectProvider.ConvertDbValue(reader.GetValue(1), typeof(V)); map.Add(key, value); }, map, token)); }
internal static Dictionary <K, V> Dictionary <K, V>(this IDataReader reader, IOrmLiteDialectProvider dialectProvider) { var map = new Dictionary <K, V>(); while (reader.Read()) { var key = (K)dialectProvider.ConvertDbValue(reader.GetValue(0), typeof(K)); var value = (V)dialectProvider.ConvertDbValue(reader.GetValue(1), typeof(V)); map.Add(key, value); } return(map); }
internal static T ToScalar <T>(IOrmLiteDialectProvider dialectProvider, object oValue) { if (oValue == DBNull.Value) { return(default(T)); } var typeCode = typeof(T).GetUnderlyingTypeCode(); switch (typeCode) { case TypeCode.DateTime: return((T)(object)DateTime.Parse(oValue.ToString(), CultureInfo.CurrentCulture)); case TypeCode.Decimal: return((T)(object)Decimal.Parse(oValue.ToString(), CultureInfo.CurrentCulture)); case TypeCode.Single: return((T)(object)System.Single.Parse(oValue.ToString(), CultureInfo.CurrentCulture)); case TypeCode.Double: return((T)(object)Double.Parse(oValue.ToString(), CultureInfo.CurrentCulture)); } object o = dialectProvider.ConvertDbValue(oValue, typeof(T)); return(o == null ? default(T) : (T)o); }
internal static Task <Dictionary <K, List <V> > > LookupAsync <K, V>(this IDataReader reader, IOrmLiteDialectProvider dialectProvider, CancellationToken token) { var lookup = new Dictionary <K, List <V> >(); return(dialectProvider.ReaderEach(reader, () => { var key = (K)dialectProvider.ConvertDbValue(reader.GetValue(0), typeof(K)); var value = (V)dialectProvider.ConvertDbValue(reader.GetValue(1), typeof(V)); List <V> values; if (!lookup.TryGetValue(key, out values)) { values = new List <V>(); lookup[key] = values; } values.Add(value); }, lookup, token)); }
internal static Dictionary <K, List <V> > Lookup <K, V>(this IDataReader reader, IOrmLiteDialectProvider dialectProvider) { var lookup = new Dictionary <K, List <V> >(); while (reader.Read()) { var key = (K)dialectProvider.ConvertDbValue(reader.GetValue(0), typeof(K)); var value = (V)dialectProvider.ConvertDbValue(reader.GetValue(1), typeof(V)); List <V> values; if (!lookup.TryGetValue(key, out values)) { values = new List <V>(); lookup[key] = values; } values.Add(value); } return(lookup); }
internal static Task <HashSet <T> > ColumnDistinctAsync <T>(this IDataReader reader, IOrmLiteDialectProvider dialectProvider, CancellationToken token) { return(dialectProvider.ReaderEach(reader, () => { var value = dialectProvider.ConvertDbValue(reader.GetValue(0), typeof(T)); return value == DBNull.Value ? default(T) : value; }, token) .Then(x => { var columValues = new HashSet <T>(); x.Each(o => columValues.Add((T)o)); return columValues; })); }
internal static HashSet <T> ColumnDistinct <T>(this IDataReader reader, IOrmLiteDialectProvider dialectProvider) { var columValues = new HashSet <T>(); while (reader.Read()) { var value = dialectProvider.ConvertDbValue(reader.GetValue(0), typeof(T)); if (value == DBNull.Value) { value = default(T); } columValues.Add((T)value); } return(columValues); }