/// <summary>
        /// Fonction retournant une liste de dons acceptés ou stockés, triés selon la propriété dont on a le get en argument
        /// </summary>
        /// <example>
        /// <code>
        /// TriAccepteStocke<int>(x => x.Identifiant);
        /// </code>
        /// </example>
        /// <typeparam name="T">Type de l'élément à comparer</typeparam>
        /// <param name="fonctionObtentionPropriete">fonction donnant la propriété à comparer </param>
        /// <returns>liste triée de dons acceptés ou stockés</returns>
        public static List <Don> TriAccepteStocke <T>(FonctionObtentionProprieteDon <T> fonctionObtentionPropriete) where T : IComparable <T>
        {
            List <Don> donsAccepteStocke = Don.TrouverDon(don => don.Statut == Don.StatutDon.Accepte || don.Statut == Don.StatutDon.Stocke);

            donsAccepteStocke.Sort((x, y) => fonctionObtentionPropriete(x).CompareTo(fonctionObtentionPropriete(y)));
            return(donsAccepteStocke);
        }
        /// <summary>
        /// Fonction retournant une liste de dons refusés, triés selon la propriété dont on a le get en argument
        /// </summary>
        /// <typeparam name="T">Type de l'élément à comparer</typeparam>
        /// <param name="fonctionObtentionPropriete">fonction donnant la propriété à comparer </param>
        /// <returns>liste triée de dons refusés</returns>
        public static List <Don> TriRefuse <T>(FonctionObtentionProprieteDon <T> fonctionObtentionPropriete) where T : IComparable <T>
        {
            List <Don> donsRefusesParDate = Don.TrouverDon(don => don.Statut == Don.StatutDon.Refuse);

            donsRefusesParDate.Sort((x, y) => fonctionObtentionPropriete(x).CompareTo(fonctionObtentionPropriete(y)));
            return(donsRefusesParDate);
        }
        /// <summary>
        /// Permet de rechercher un don selon son statut et son type d'objet
        /// </summary>
        /// <typeparam name="T">type de l'objet du don</typeparam>
        /// <param name="statutCherche"></param>
        /// <returns>Liste de dons correspondants</returns>
        public static List <Don> RechercheDonParStatutType <T>(string statutCherche) where T : Materiel
        {
            Don.StatutDon statutDonCherche;
            switch (statutCherche.ToLower())
            {
            case "accepte":
            case "accepté":
                statutDonCherche = Don.StatutDon.Accepte;
                break;

            case "refuse":
            case "refusé":
                statutDonCherche = Don.StatutDon.Refuse;
                break;

            case "stocke":
            case "stocké":
                statutDonCherche = Don.StatutDon.Stocke;
                break;

            default:
                statutDonCherche = Don.StatutDon.EnAttente;
                break;
            }
            return(Don.TrouverDon <T>(don => don.Statut == statutDonCherche));
        }
        /// <summary>
        /// Permet de rechercher un don selon son mois de réception et son type d'objet
        /// </summary>
        /// <typeparam name="T">type de l'objet du don</typeparam>
        /// <param name="moisDuDon"></param>
        /// <returns>Liste de dons correspondants</returns>
        public static List <Don> RechercheDonParMoisType <T>(string moisDuDon) where T : Materiel
        {
            int mois = 0;

            try
            {
                mois = Convert.ToInt32(moisDuDon);
            }
            catch
            {
                return(new List <Don>());
            }

            return(Don.TrouverDon <T>(don => don.DateReception.Month == mois));
        }