Example #1
0
        public static ICollection <T> AjouterSaufSiStocke <T>(
            this ICollection <T> collection,
            IEnumerable <T> elementsAAjouter)
        {
            try
            {
                elementsAAjouter = (elementsAAjouter as ICollection <T>) ?? elementsAAjouter.ToArray(); // Permet de ne pas recalculer en permanence le contenu si c'est un Enumerable 'pur'

                if (elementsAAjouter.Any())
                {
                    if (elementsAAjouter.Count() == 1)
                    {
                        var item = elementsAAjouter.First();

                        if (!collection.Contains(item))
                        {
                            collection
                            .Add(
                                item);
                        }
                    }
                    else
                    {
                        var items = elementsAAjouter
                                    .Except(collection);

                        collection
                        .Ajouter(items);
                    }
                }

                return(collection);
            }
            catch (Exception ex)
            {
                Fabrique.Instance
                ?.RecupererGestionnaireTraces()
                ?.PublierException(
                    ex);

                throw new ExceptionTechnique(
                          ExceptionBase.RecupererLibelleMessage(),
                          ex);
            }
        }