private void ImplicitlyAndJoinsOnSameField()
 {
     object[] nodes = _nodes.ToArray();
     for (int i = 0; i < nodes.Length; i++)
     {
         object node = nodes[i];
         if (node is OrIndexedLeaf)
         {
             OrIndexedLeaf current = (OrIndexedLeaf)node;
             OrIndexedLeaf other   = FindJoinOnSameFieldAtSameLevel(current);
             if (null != other)
             {
                 nodes[Arrays4.IndexOfIdentity(nodes, other)] = null;
                 CollectImplicitAnd(current.GetConstraint(), current, other);
             }
         }
     }
 }
Beispiel #2
0
		private OrIndexedLeaf FindJoinOnSameFieldAtSameLevel(OrIndexedLeaf join)
		{
			IEnumerator i = _nodes.GetEnumerator();
			while (i.MoveNext())
			{
				if (i.Current == join)
				{
					continue;
				}
				if (i.Current is OrIndexedLeaf)
				{
					OrIndexedLeaf current = (OrIndexedLeaf)i.Current;
					if (current.GetIndex() == join.GetIndex() && ParentConstraint(current) == ParentConstraint
						(join))
					{
						return current;
					}
				}
			}
			return null;
		}
        private OrIndexedLeaf FindJoinOnSameFieldAtSameLevel(OrIndexedLeaf join)
        {
            IEnumerator i = _nodes.GetEnumerator();

            while (i.MoveNext())
            {
                if (i.Current == join)
                {
                    continue;
                }
                if (i.Current is OrIndexedLeaf)
                {
                    OrIndexedLeaf current = (OrIndexedLeaf)i.Current;
                    if (current.GetIndex() == join.GetIndex() && ParentConstraint(current) == ParentConstraint
                            (join))
                    {
                        return(current);
                    }
                }
            }
            return(null);
        }
 private object ParentConstraint(OrIndexedLeaf node)
 {
     return(node.GetConstraint().Parent());
 }
Beispiel #5
0
		private object ParentConstraint(OrIndexedLeaf node)
		{
			return node.GetConstraint().Parent();
		}