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 :

Utilisation de last et any


Sujet :

Entity Framework

  1. #1
    Membre habitué
    Utilisation de last et any
    bonjour,

    j'ai cette ligne de code :

    Code VB :Sélectionner tout -Visualiser dans une fenêtre à part
    context.Personne.Where(Function(x) x.DemandeLogement.Any(Function(y) y.CritereRecherche.CritereRecherche_TypeHabitation.Any(Function(z) z.IdTypeHabitation = CLng(item)))).ToList


    À la place du Any, j'aimerai Utiliser Last.
    Code VB :Sélectionner tout -Visualiser dans une fenêtre à part
    context.Personne.Where(Function(x) x.DemandeLogement.Last.CritereRecherche.CritereRecherche_TypeHabitation.Any(Function(z) z.IdTypeHabitation = CLng(item))).ToList

    Seulement le compilateur me dit :

    LINQ to Entities does not recognize the method 'Gestion_Demande_Logement_CPAS.DemandeLogement Last[DemandeLogement](System.Collections.Generic.IEnumerable`1[Gestion_Demande_Logement_CPAS.DemandeLogement])' method, and this method cannot be translated into a store expression
    Je ne comprend pas pourquoi je ne peux pas faire ma recherche sur le dernier élément de DemandeLogement dans la première clause Where.


    Ma question est : comment dois-je m'y prendre.

  2. #2
    Membre éprouvé
    Salut,

    Le plus simple quand on débute avec linq et de s'imaginer ce que signifie les expressions qu'on utilise.

    Par exemple dans ton cas, ta première instruction signifie :

    "Je veux toutes les personnes dont au moins une demande de logement à dans ses critères de recherche sur le type d'habitation celui que je passe en parametre"

    Tu ne précise pas quel "Any" tu veux remplacer mais je suppose qu'il s'agit du premier vu que remplacer le deuxieme me semble pas d'un intéret délirant.

    Ca veut dire donc que ton instruction doit signifier :

    "Je veux toutes les personnes dont la dernière demande de logement à dans ses critères de recherche sur le type d'habitation celui que je passe en parametre"

    Ca qui niveau lambda donnerai un truc comme :

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    context.Personne.Where(Function(x) x.DemandeLogement.Last().CritereRecherche.CritereRecherche_TypeHabitation.Any(Function(z) z.IdTypeHabitation = CLng(item)))).ToList
    La Triforce du développement : Fainéantise, Curiosité et Imagination.

  3. #3
    Membre habitué
    Bonjour Momoth,

    Merci pour ton intervention. Cela m'aide à mieux visualiser la requête linq d'Entity.
    J'arrive à la même solution que tu proposes

    Je clos le post en résolu.

###raw>template_hook.ano_emploi###