Example #1
0
        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();
                }
            }
        }