Ejemplo n.º 1
0
        public List <Record> Read()
        {
            OleDbConnection conn = new OleDbConnection
            {
                ConnectionString = ConnectionString
            };

            conn.Open();

            OleDbCommand comm = new OleDbCommand
            {
                CommandText = SelectStatement,
                Connection  = conn
            };

            OleDbDataReader reader  = comm.ExecuteReader();
            List <Record>   records = new List <Record>();

            while (reader.Read())
            {
                var record = ReaderSettings
                             .ToArray()
                             .Select((KeyValuePair <string, Type> keyValue, int index) => {
                    var columnName = keyValue.Key;
                    var columnType = keyValue.Value;
                    object value   = reader.GetValue(index);
                    if (columnType == typeof(string))
                    {
                        return(new KeyValuePair <string, ColumnValue>(
                                   columnName,
                                   new ColumnValue(
                                       value, // DecodeString((byte[])value, MdbEncoding),
                                       columnType
                                       )
                                   ));
                    }
                    return(new KeyValuePair <string, ColumnValue>(
                               columnName,
                               new ColumnValue(
                                   value,
                                   columnType
                                   )
                               ));
                })
                             .ToDictionary(
                    keyValue => keyValue.Key,
                    keyValue => keyValue.Value
                    );
                records.Add((Record)record);
            }

            conn.Close();

            return(records);
        }