Exemplo n.º 1
0
        //---------------------------------------------------
        public static bool Compare(object o1, object o2, EOperateurJointure operateur)
        {
            IComparable c1 = o1 as IComparable;
            IComparable c2 = o2 as IComparable;

            if (c1 == null || c2 == null)
            {
                return(false);
            }
            switch (operateur)
            {
            case EOperateurJointure.Egal:
                return(c1.CompareTo(c2) == 0);

            case EOperateurJointure.Superieur:
                return(c1.CompareTo(c2) > 0);

            case EOperateurJointure.SuperieurEgal:
                return(c1.CompareTo(c2) >= 0);

            case EOperateurJointure.Inferieur:
                return(c1.CompareTo(c2) < 0);

            case EOperateurJointure.InferieurEgal:
                return(c1.CompareTo(c2) <= 0);

            case EOperateurJointure.Different:
                return(c1.CompareTo(c2) != 0);
            }
            return(false);
        }
Exemplo n.º 2
0
        //-----------------------------------------
        public CResultAErreur Serialize(C2iSerializer serializer)
        {
            int            nVersion = GetNumVersion();
            CResultAErreur result   = serializer.TraiteVersion(ref nVersion);

            if (!result)
            {
                return(result);
            }
            result = serializer.TraiteObject <C2iExpression>(ref m_formuleTable1);
            if (result)
            {
                result = serializer.TraiteObject <C2iExpression>(ref m_formuleTable2);
            }
            if (!result)
            {
                return(result);
            }
            int nOperateur = (int)m_operateur;

            serializer.TraiteInt(ref nOperateur);
            m_operateur = (EOperateurJointure)nOperateur;
            return(result);
        }
Exemplo n.º 3
0
        private List <CMapRows> GetMatches(Dictionary <object, List <DataRow> > dic1,
                                           Dictionary <object, List <DataRow> > dic2, EOperateurJointure operateur)
        {
            List <CMapRows> lstRetour = new List <CMapRows>();

            if (operateur == EOperateurJointure.Egal)
            {
                foreach (KeyValuePair <object, List <DataRow> > kv in dic1)
                {
                    List <DataRow> lst2 = null;
                    if (dic2.TryGetValue(kv.Key, out lst2))
                    {
                        //Egalité trouvée
                        lstRetour.Add(new CMapRows(kv.Value, lst2));
                    }
                    else
                    {
                        if (ModeJointure == EModeJointure.Left || ModeJointure == EModeJointure.Outer)
                        {
                            lstRetour.Add(new CMapRows(kv.Value, new List <DataRow>()));
                        }
                    }
                }
                if (ModeJointure == EModeJointure.Right || ModeJointure == EModeJointure.Outer)
                //Ajoute les élément 2 non trouvés dans les éléments 1
                {
                    foreach (KeyValuePair <object, List <DataRow> > kv in dic2)
                    {
                        if (!dic1.ContainsKey(kv.Key))
                        {
                            lstRetour.Add(new CMapRows(new List <DataRow>(), kv.Value));
                        }
                    }
                }
            }
            else//Autre opérateur, on est obligé de tout balayer
            {
                foreach (KeyValuePair <object, List <DataRow> > kv1 in dic1)
                {
                    foreach (KeyValuePair <object, List <DataRow> > kv2 in dic2)
                    {
                        if (CParametreJointure.Compare(kv1.Key, kv2.Key, operateur))
                        {
                            lstRetour.Add(new CMapRows(kv1.Value, kv2.Value));
                        }
                    }
                }
            }
            return(lstRetour);
        }