Example #1
0
        protected bool InternalGetNextAsView(IList <object[]> results, ForwardOnlyFilteredReader.StatefulRowPredicate fetchWhile)
        {
            bool flag = fetchWhile(null);

            if (!flag)
            {
                return(false);
            }
            object[][] rows = this.Query.GetRows(int.MaxValue);
            int        num  = 0;

            if (rows.Length == 0)
            {
                return(false);
            }
            foreach (object[] filteredRow in rows)
            {
                object[] unfilteredRow = this.queryPropertySets.RemitFilteredOffProperties(filteredRow);
                num++;
                foreach (object[] unfilteredRow2 in this.TransformRow(unfilteredRow) ?? Array <object[]> .Empty)
                {
                    flag = fetchWhile(this.queryPropertySets.FilterRow(unfilteredRow2, ForwardOnlyFilteredReader.PropertySet.ForFilter));
                    if (!flag)
                    {
                        break;
                    }
                    results.Add(this.queryPropertySets.FilterRow(unfilteredRow2, ForwardOnlyFilteredReader.PropertySet.Requested));
                }
            }
            this.Query.SeekToOffset(SeekReference.OriginCurrent, num - rows.Length);
            return(flag);
        }
Example #2
0
        internal virtual object[][] GetNextAsView(ForwardOnlyFilteredReader.StatefulRowPredicate fetchWhile)
        {
            List <object[]> list = new List <object[]>();

            if (fetchWhile == null)
            {
                fetchWhile = ((object[] forFilterRow) => true);
            }
            while (this.InternalGetNextAsView(list, fetchWhile))
            {
            }
            if (!this.usePrefetchMode)
            {
                this.PopulateRows(list);
            }
            return(list.ToArray());
        }