Recherche dynamique en linq to entity

Signaler
Messages postés
3
Date d'inscription
mardi 31 décembre 2013
Statut
Membre
Dernière intervention
10 janvier 2014
-
Messages postés
355
Date d'inscription
mercredi 13 avril 2011
Statut
Membre
Dernière intervention
15 juin 2019
-
Bonjour tous le monde,
je veut savoir comment faire la même chose de cette recherche en linq to entity et merci mille fois:


db_azddineEntities dbe = new db_azddineEntities();
string req = "SELECT VALUE cl FROM client AS cl WHERE cl.numero>0";

if (button6mekes.BackColor == Color.LimeGreen)
{
if (req.EndsWith("cl.numero>0"))
{
req = req + " and cl.ville ='meknes'";
// MessageBox.Show("d");
}
else
{
req = req + " or cl.ville ='meknes'";
}
}

if (button7fes.BackColor == Color.LimeGreen)
{
if (req.EndsWith("cl.numero>0"))
{
req = req + " and cl.ville ='fes'";
}
else
{
req = req + " or cl.ville ='fes'";
}

}

ObjectQuery<client> requete = new ObjectQuery<client>(req, dbe, MergeOption.NoTracking);
requete.ToList().ForEach((client p) =>
{
dataGridView3.Rows.Add(p.numero, p.nom, p.prenom,p.ville);

});

2 réponses

Messages postés
16021
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
11 juin 2021
549
Bonjour, merci quand tu postes un code d'utiliser les balises (voir ma signature, attention il y a un petit bug pour csharp, il manque le s à corriger avant l'envoi).

Pour faire des if .... else.... dans une requête Linq, il faut utiliser l'opérateur ?:, cependant je ne l'ai jamais utilisé pour choisir l'opérateur.

Ton deuxième if, à mon sens ne sert à rien:
db_azddineEntities dbe = new db_azddineEntities(); 
string req = "SELECT VALUE cl FROM client AS cl WHERE cl.numero>0"; 

if (button6mekes.BackColor == Color.LimeGreen) 
{ 
    if (req.EndsWith("cl.numero>0")) // à ce moment du code, req finit forcement par "cl.numero>0", à moins que tu aies coupé une partie de code entre la déclaration et ici
    { 
         req = req + " and cl.ville ='meknes'"; 
        // MessageBox.Show("d"); 
    } 
   else 
   { 
        req = req + " or cl.ville ='meknes'";
   } 
} 



Sinon pour faire du Linq Dynamique, il y a cette méthode.


Je ne fais pas de base de données, il y a peut être des subtilités que je ne connais pas.
Mais si tu veux, je pourrais de donner un exemple en partant d'une List<T> pour tes données (heu demain....).
Messages postés
3
Date d'inscription
mardi 31 décembre 2013
Statut
Membre
Dernière intervention
10 janvier 2014

Comment afficher les données entre deux tables en utilisant ObjectQuery<>
Messages postés
16021
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
11 juin 2021
549
Comme je te l'ai écrit plus haut, je ne fais pas de base de données.
Messages postés
355
Date d'inscription
mercredi 13 avril 2011
Statut
Membre
Dernière intervention
15 juin 2019
10
var req1=from ds in db.Table