예제 #1
0
        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);
            }
        }
예제 #2
0
        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));
            }
        }
예제 #3
0
 public static IDictionary <string, object> ToDictionary(this IDataRecord dataRecord, IDictionary <string, int> index)
 {
     return(OptimizedDictionary.Create(index, dataRecord.GetValues()));
 }