dynamic query library

Résolu
fifita92 - 20 juin 2013 à 16:29
Whismeril Messages postés 19040 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 9 mai 2024 - 22 juin 2013 à 17:42
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

cs_Bidou Messages postés 5486 Date d'inscription dimanche 4 août 2002 Statut Membre Dernière intervention 20 juin 2013 61
20 juin 2013 à 23:22
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.
3
krimog Messages postés 1860 Date d'inscription lundi 28 novembre 2005 Statut Membre Dernière intervention 14 février 2015 49
20 juin 2013 à 17:51
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é. -
0
Whismeril Messages postés 19040 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 9 mai 2024 656
20 juin 2013 à 18:31
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
0
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 .
0

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

Posez votre question
Whismeril Messages postés 19040 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 9 mai 2024 656
20 juin 2013 à 21:44
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
0
Whismeril Messages postés 19040 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 9 mai 2024 656
21 juin 2013 à 13:53
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
0
Whismeril Messages postés 19040 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 9 mai 2024 656
21 juin 2013 à 14:07
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
0
Merci beaucoup pour votre aide :) je vais essayer ça et je vous réponds :)
0
Whismeril Messages postés 19040 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 9 mai 2024 656
22 juin 2013 à 17:42
Bonsoir,

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



Whismeril
0
Rejoignez-nous