Linq - parametre && et || pas pris en compte

cs_wally88 Messages postés 361 Date d'inscription jeudi 5 février 2004 Statut Membre Dernière intervention 1 octobre 2010 - 20 nov. 2008 à 15:42
nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Membre Dernière intervention 15 juillet 2011 - 21 nov. 2008 à 16:31
Bonjour,

J'ai une requete ou j'ai bien join mes tables tout fonctionne a part un "critère"

C'est pour  un systeme de petit annonce.
Je fais une recherche sur différents critères avec des || cela fonctionne tres bien et il faut que l'annonce soit active d'ou apres mes || je met un && activation == "vrai"
Mais la il s'en moque de se paramètre actif ou non il me l'ajoute.

Si quelqu'un sais pourquoi ?

Merci.

5 réponses

nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Membre Dernière intervention 15 juillet 2011 37
21 nov. 2008 à 13:14
Salut,

Peux-tu reformuler ta question, j'ai pas compris.

Et mettre la requete linq
et activation est de type boolean ou string??
&& activation == true

par exemple ca donne quoi?
0
cs_wally88 Messages postés 361 Date d'inscription jeudi 5 février 2004 Statut Membre Dernière intervention 1 octobre 2010
21 nov. 2008 à 13:22
Bonjour, voila la requete, c'est un string. Toute la requete fonctione bien mise a part qu'il se moque que se soit "active" ou non.
donc pour le moment je tourne avec du lourd, je fait du trie apres avec le foreach.
Donc soit ma requete est mauvaise, ce qui est fort probable vue mon niveau sql, soit j'en sais rien :s Ou est ce qu'il existe quelquechose pour forcer un critère ?
Merci.

ArrayList al =
new
ArrayList();

foreach (
var ord
in Query)
{

if (ord.ech_etat !=
"desactive")
al.Add(ord);
}

var Query =
from p
in oAnnonce.echanges

join p2
in oAnnonce.utilisateurs
on p.ech_u_id
equals p2.u_id

join p3
in oAnnonce.contres
on p.ech_id
equals p3.con_ech_id
where p.ech_etat"active" && p.ech_categorie concategorie ||

p.ech_type == contype ||

p.ech_marq_nom == conmarque ||

p.ech_modele_nom == conmodele ||

p3.c_marque1 == echmarque ||

p3.c_modele1 == echmodele ||

p3.c_marque2 == echmarque ||

p3.c_modele2 == echmodele ||

select
new { p.ech_etat, p2.u_cp, p.ech_marq_nom, p.ech_modele_nom, p.ech_estimation, p.ech_id, p.ech_image1, p.ech_type, p.ech_annee };
0
nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Membre Dernière intervention 15 juillet 2011 37
21 nov. 2008 à 14:29
Quelle est la requete resultat?

Mais un point d'arret sur le ToList() et tu veras comme ce active est traduit en SQL

Ensuite
p3.c_modele2 == echmodele ||

select new

Est faux mais c'est pas de la l'erreur si elle fonctionne ta requete

Regardes avec
Etat est bien de type string?
 
p.ech_etat.Equals(
"active")
0
cs_wally88 Messages postés 361 Date d'inscription jeudi 5 février 2004 Statut Membre Dernière intervention 1 octobre 2010
21 nov. 2008 à 14:40
Oui etat est bien un string, il me les trouvent bien les "active" lorsque je ne fais que ça : p.ech_etat=="active"
 
dans ma requete.
Avec beaucoup d'enregistrement dans la table, le foreach avec la condition risque de faire trop lourd niveau perf ? 
Pour le || devant le select c'est parce que j'ai coupé la requete yen encore deux marques et modele apres et j'ai oublié d'enlever le || sur le post
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Membre Dernière intervention 15 juillet 2011 37
21 nov. 2008 à 16:31
Il y aurait pas une histoire  de paranthese par hasard
0
Rejoignez-nous