dynamic query library [Résolu]

Signaler
-
Messages postés
15407
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
20 janvier 2021
-
Bonjour tout le monde SVP si quelqu'un peut m'aider ,j'utilise dynamic query library pour afficher un ensemble d'information de la base de données selon une condition je peux afficher avec cette méthode

var query = ab.CommandeAchat
                        
         .Where("EtatAchat=@0 and PartenaireidPartenaire=@1",  "devis",11)
          
         .Select(" new (ListePrixidListePrix, idCdeAchat,refCommande, dateCommande,  datePrevu,  EtatAchat)");

                 datagridview1.DataSource = query;


mais quand je change cette ligne avec
/code.Where("EtatAchat = devis and PartenaireidPartenaire = 11")/code
il me donne une erreur et moi j'ai besoin de travailler avec la deuxième mèthode .
Merci d'avance :)

9 réponses

Messages postés
5487
Date d'inscription
dimanche 4 août 2002
Statut
Modérateur
Dernière intervention
20 juin 2013
51
public class Program
{
    public static void Main(string[] args)
    {
        var result = new List<Demo>
        {
            new Demo() {Key 1, Name "Test1"},
            new Demo() {Key 2, Name "Test2"},
            new Demo() {Key 3, Name "Test3"},
        }
        .AsQueryable().Where("Key=1 and Name="Test1"");
    }
}

public class Demo
{
    public int Key { get; set; }
    public string Name { get; set; }
}


Consulte le lien donné hier soir, il contient des exemples d'utilisations.
Messages postés
1860
Date d'inscription
lundi 28 novembre 2005
Statut
Modérateur
Dernière intervention
14 février 2015
43
Salut

Je ne connais pas la Dynamic Query Library, mais si j'étais toi, j'essaierais ça :
.Where("EtatAchat='devis' and PartenaireidPartenaire=11")

ou
.Where("EtatAchat="devis" and PartenaireidPartenaire=11")


Généralement, les strings doivent être encadrés par des ' ou ".

En revanche, pourquoi ne peux-tu pas utiliser la première méthode ? Elle est beaucoup plus propre et plus simple.

Krimog : while (!(succeed = try())) ;
- Nous ne sommes pas des décodeurs ambulants. Le style SMS est prohibé. -
Messages postés
15407
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
20 janvier 2021
502
Bonsoir, linq se code en C# (ou en VB mais là t'es dans le forum c#)

Je n'ai pas encore eu le temps d'essayer depuis hier soir, par contre en Linq pur ce serait ça
.Where("EtatAchat == devis && PartenaireidPartenaire==11")

ou ça
.Where("EtatAchat=="devis" and PartenaireidPartenaire==11")

Whismeril
Bonsoir, D’accord merci beaucoup à vous je vais essayer les deux méthodes pour voir
par contre krimog , je veux utiliser la deuxième car je vais récupérer la condition qui sera dans where sous forme d'une chaine de caractère à partir d'une autre méthode .
Messages postés
15407
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
20 janvier 2021
502
La façon dont tu construis ton string est un autre sujet et cette syntaxe (pour autant que je saches) ne va pas en c#
"EtatAchat==@0 and PartenaireidPartenaire==@1",  "devis",11


C'est plutôt quelque chose comme ça:
string monWhere = string.Format(EtatAchat=={0} and PartenaireidPartenaire== {1}",  "devis",11)


Ce que Krimog présentait en proposant deux syntaxes c'est que si EtatAchat est un string, il faut peut être que dans la chaine monWhere les " apparaissent et pour ça il faut les échapper avec \.

Ce qui donnerait:
string monWhere = string.Format(EtatAchat=={0} and PartenaireidPartenaire== {1}",  ""devis"",11)


Il faut essayer.
Whismeril
Messages postés
15407
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
20 janvier 2021
502
La façon dont tu construis ton string est un autre sujet et cette syntaxe (pour autant que je saches) ne va pas en c#
Code C# :
"EtatAchat==@0 and PartenaireidPartenaire==@1", "devis",11


Je viens de regarder l'exmple, je me suis trompé, au temps pour moi!

Whismeril
Messages postés
15407
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
20 janvier 2021
502
Il m'éppate quand même ce code
            Northwind db = new Northwind(connString); 
            db.Log = Console.Out;

            var query db.Customers.Where("City @0 and Orders.Count >= @1", "London", 10).
                OrderBy("CompanyName").
                Select("New(CompanyName as Name, Phone)");

            Console.WriteLine(query);
            Console.ReadLine();

On dirait du VB passé au traducteur dont les partie en string n'ont pas été traitées?!

Whismeril
Merci beaucoup pour votre aide :) je vais essayer ça et je vous réponds :)
Messages postés
15407
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
20 janvier 2021
502
Bonsoir,

@bidou j'ai testé tes propositions, mais je coince, si tu veux bien regarder l'autre discussion.



Whismeril