IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Entity Framework Discussion :

Méthode générique retournant Max(Id)


Sujet :

Entity Framework

  1. #1
    Membre expérimenté Avatar de callo
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    février 2004
    Messages
    887
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Togo

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Service public

    Informations forums :
    Inscription : février 2004
    Messages : 887
    Points : 1 677
    Points
    1 677
    Par défaut Méthode générique retournant Max(Id)
    Bonjour,

    J'ai besoin de créer une méthode générique qui retournera un string représentant le maximum Id d'une entité. Un filtre devra être appliqué à chaque fois pour réduire mon champ d'action (ChampId LIKE "Filtre%"). Actuellement dans mon code, je fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    public string GetMaximumCustmerId(string filterExpression)  
    {
    	using (var context = new MyWorkSpaceEntities())
    	{
    		try
    		{
    			var actualCustId = context.Customers.Where(c => c.CodeClient.StartsWith(filterExpression))
    					   .Select(m => m.CodeClient)
    					   .Max();
    				return actualCustId;
    		}                
    		catch (ArgumentNullException)
    		{
    			// ....
    		}
    		catch (InvalidOperationException ex)
    		{
    			// ...
    		}
    	}
    }
    Les parties en gras dans le code sont celles que je voudrais rendre générique. Voici la début de la méthode générique que j'ai commencé par écrire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    public static string GetMaxIdFromEntities<T>(Expression<Func<T, object>> filterExpression) where T : class 
    {
    	{
    			string maxId = null;
     
    			using (var context = new MyWorkSpaceEntities())
    			{
    				var query = context.CreateObjectSet<T>();
    				query.MergeOption = System.Data.Objects.MergeOption.NoTracking;
    				maxId = query.Where(filterExpression) ??????  // c'est ici mon blocage
    			}
    		}
    		return maxId;
    	}
    }
    Comment compléter alors ce code pour prendre en compte Max et aussi StartsWith dans la clause where? Pour être un peu plus complet, je travaille avec des entités POCO. Merci.
    N'oubliez pas le tag et

  2. #2
    Membre émérite

    Homme Profil pro
    Software Developer
    Inscrit en
    mars 2008
    Messages
    1 470
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Software Developer

    Informations forums :
    Inscription : mars 2008
    Messages : 1 470
    Points : 2 368
    Points
    2 368
    Par défaut
    "Func" devrait grandement te simplifier la vie: http://msdn.microsoft.com/en-us/library/bb534647.aspx

Discussions similaires

  1. Méthode qui retourne un tableau générique
    Par small44 dans le forum Collection et Stream
    Réponses: 11
    Dernier message: 19/10/2013, 00h51
  2. une méthode qui retourne une valeur
    Par soujava dans le forum Débuter avec Java
    Réponses: 8
    Dernier message: 17/04/2008, 15h29
  3. Réponses: 10
    Dernier message: 04/03/2008, 16h13
  4. [jse5/generics] Méthodes génériques
    Par palnap dans le forum Langage
    Réponses: 5
    Dernier message: 04/03/2008, 13h14
  5. Réponses: 7
    Dernier message: 19/03/2007, 20h24

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo