private IEnumerable <IDictionary <string, object> > CreateObjectGraphs() { var load = BuildLoadDictionary(); IDictionary <string, int> index = null; foreach (var kvp in load) { if (index == null) { index = kvp.Key.Keys.Select((k, i) => new KeyValuePair <string, int>(k, i)).ToDictionary(HomogenizedEqualityComparer.DefaultInstance); } var row = new OptimizedDictionary <string, object>(index, kvp.Key.Values); foreach (var sub in kvp.Value) { if (sub.Value.Single != null) { row[sub.Key] = sub.Value.Single; } else if (sub.Value.Collection != null) { row[sub.Key] = sub.Value.Collection.ToList(); } } yield return(row); } }
private static IEnumerable <IDictionary <string, object> > ToDictionariesImpl(IDataReader reader) { var index = reader.CreateDictionaryIndex(); var values = new object[reader.FieldCount]; while (reader.Read()) { reader.GetValues(values); yield return(OptimizedDictionary.Create(index, values)); } }
public static IDictionary <string, object> ToDictionary(this IDataRecord dataRecord, IDictionary <string, int> index) { return(OptimizedDictionary.Create(index, dataRecord.GetValues())); }