コード例 #1
0
        public override void IntersectAll(RowSetNavigatorData other)
        {
            object[] b = null;
            this.SortFull();
            this.Reset();
            other.SortFull();
            IRowIterator emptyIterator = this._fullIndex.GetEmptyIterator();

            while (base.HasNext())
            {
                object[] next = base.GetNext();
                if ((b == null) || (this._fullIndex.CompareRowNonUnique(this._session, next, b, this._fullIndex.GetColumnCount()) > 0))
                {
                    b             = next;
                    emptyIterator = other.FindFirstRow(next);
                }
                Row      nextRow   = emptyIterator.GetNextRow();
                object[] objArray3 = (nextRow == null) ? null : nextRow.RowData;
                if ((objArray3 == null) || (this._fullIndex.CompareRowNonUnique(this._session, next, objArray3, this._fullIndex.GetColumnCount()) != 0))
                {
                    this.Remove();
                }
            }
            other.Close();
        }
コード例 #2
0
ファイル: RowSetNavigatorData.cs プロジェクト: cwdotson/FwNs
 public virtual void Copy(RowSetNavigatorData other, int[] rightColumnIndexes)
 {
     while (other.HasNext())
     {
         object[] next = other.GetNext();
         this.AddAdjusted(next, rightColumnIndexes);
     }
     other.Close();
 }
コード例 #3
0
ファイル: RowSetNavigatorData.cs プロジェクト: cwdotson/FwNs
 public void UnionAll(RowSetNavigatorData other)
 {
     other.Reset();
     while (other.HasNext())
     {
         object[] next = other.GetNext();
         this.Add(next);
     }
     other.Close();
     this.Reset();
 }
コード例 #4
0
ファイル: RowSetNavigatorData.cs プロジェクト: cwdotson/FwNs
 public virtual void Intersect(RowSetNavigatorData other)
 {
     this.RemoveDuplicates();
     other.SortFull();
     while (base.HasNext())
     {
         object[] next = base.GetNext();
         if (!other.ContainsRow(next))
         {
             this.Remove();
         }
     }
     other.Close();
     this.Reset();
 }
コード例 #5
0
 public override void Union(RowSetNavigatorData other)
 {
     this.RemoveDuplicates();
     this.Reset();
     while (other.HasNext())
     {
         object[] next = other.GetNext();
         if (!this.FindFirstRow(next).HasNext())
         {
             next = ArrayUtil.ResizeArrayIfDifferent <object>(next, this.table.GetColumnCount());
             this.Add(next);
         }
     }
     other.Close();
 }
コード例 #6
0
 public override void Except(RowSetNavigatorData other)
 {
     this.RemoveDuplicates();
     this.Reset();
     other.SortFull();
     while (base.HasNext())
     {
         object[] next = base.GetNext();
         if (other.ContainsRow(next))
         {
             this.Remove();
         }
     }
     other.Close();
 }
コード例 #7
0
ファイル: RowSetNavigatorData.cs プロジェクト: cwdotson/FwNs
 public virtual void Union(RowSetNavigatorData other)
 {
     this.RemoveDuplicates();
     other.RemoveDuplicates();
     while (other.HasNext())
     {
         object[] next = other.GetNext();
         int      num  = ArraySort.SearchFirst <object[]>(this._table, 0, base.Size, next, this);
         if (num < 0)
         {
             num             = -num - 1;
             base.CurrentPos = num;
             this.Insert(next);
         }
     }
     other.Close();
     this.Reset();
 }
コード例 #8
0
ファイル: RowSetNavigatorData.cs プロジェクト: cwdotson/FwNs
        public virtual void IntersectAll(RowSetNavigatorData other)
        {
            object[] b = null;
            this.SortFull();
            other.SortFull();
            IRowIterator emptyIterator = this._queryExpression.FullIndex.GetEmptyIterator();

            while (base.HasNext())
            {
                object[] next = base.GetNext();
                if ((b == null) || (this._queryExpression.FullIndex.CompareRowNonUnique((Session)base.session, next, b, this._visibleColumnCount) > 0))
                {
                    b             = next;
                    emptyIterator = other.FindFirstRow(next);
                }
                object[] objArray3 = emptyIterator.GetNext();
                if ((objArray3 == null) || (this._queryExpression.FullIndex.CompareRowNonUnique((Session)base.session, next, objArray3, this._visibleColumnCount) != 0))
                {
                    this.Remove();
                }
            }
            other.Close();
            this.Reset();
        }