Example #1
0
        public void InsertAggregateIndicatorJoinCondition(Field field, int fieldIndex, Field aggregateIndicatorField, int aggregateIndicatorFieldIndex, InitializationContext context)
        {
            int num = -1;

            if (base.m_joinConditions != null)
            {
                for (int i = 0; i < base.m_joinConditions.Count; i++)
                {
                    JoinCondition joinCondition = base.m_joinConditions[i];
                    if (joinCondition.ForeignKeyExpression.Type == ExpressionInfo.Types.Field)
                    {
                        if (joinCondition.ForeignKeyExpression.FieldIndex == fieldIndex)
                        {
                            num = i;
                        }
                        else if (joinCondition.ForeignKeyExpression.FieldIndex == aggregateIndicatorFieldIndex)
                        {
                            return;
                        }
                    }
                }
            }
            bool   flag = num == -1;
            string text = this.FindRelatedAggregateIndicatorFieldName(field);

            if (text != null)
            {
                ExpressionInfo primaryKey     = ExpressionInfo.CreateConstExpression(flag);
                ExpressionInfo expressionInfo = new ExpressionInfo();
                expressionInfo.SetAsSimpleFieldReference(text);
                JoinCondition joinCondition2 = new JoinCondition(expressionInfo, primaryKey, SortDirection.Ascending);
                joinCondition2.Initialize(base.m_relatedDataSet, base.m_naturalJoin, context);
                if (flag)
                {
                    base.AddJoinCondition(joinCondition2);
                }
                else
                {
                    base.m_joinConditions.Insert(num, joinCondition2);
                }
            }
        }