public IEnumerable <object> SelectMember(DataAspect aspect, int ordinal, ClassFilter filter, ClassSort sort, int pageSize, int pageOrdinal) { using (IDbConnection conn = _dialect.CreateConnection(_ConnectionString)) { conn.Open(); try { IEnumerable <IDataRecord> records = _dialect.CreateSelectMember(aspect, ordinal, filter, sort, pageSize, pageOrdinal).ExecuteQuery(conn); if (pageSize > 0 && pageOrdinal >= 0) { if (!_dialect.CanOffsetRecords) { if (!_dialect.CanLimitRecords) { records = new Collections.EnumerablePager <IDataRecord>(records, pageSize, pageOrdinal); } else { records = new Collections.EnumerableOffset <IDataRecord>(records, pageSize * pageOrdinal); } } else if (!_dialect.CanLimitRecords) { records = new Collections.EnumerableLimit <IDataRecord>(records, pageSize); } } foreach (IDataRecord record in records) { yield return(record.GetValue(0)); } } finally { conn.Close(); } } }