Bonjour,

Je sais qu'il y a des "pointures" linq sur ce forum. Quelqu'un peut-il donc me dire pourquoi cette méthode fonctionne :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
            var clients =
                (from c in formMDI.Bdd.Client
                 select c).ToList();
 
            var listeClients =                                      // rechercher tous les clients pas encore utilisés
                (from c in clients
                 where !c.EstDansLeTableau(tabl1)
                 && !c.EstDansLeTableau(tabl2)
                 orderby c.NumClient
                 select c).ToList();
Mais pas celle-ci ?

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
            var listeClients2 =
                (from c in formMDI.Bdd.Client
                 where !c.EstDansLeTableau(tabl1)
                 && !c.EstDansLeTableau(tabl2)
                 orderby c.NumClient
                 select c).ToList();
dans le second cas, j'obtiens une erreur :

LINQ to Entities ne reconnaît pas la méthode « Boolean EstDansLeTableau(FactuLite.Client, System.String[]) », et cette dernière ne peut pas être traduite en expression de magasin.
Y a-t-il une solution pour éviter de créer une liste avec tous les éléments de la table avant de faire la recherche?

Pour information, voici la méthode "EstDansLeTableau", qui est toute bête :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
        public static bool EstDansLeTableau(this Client client, string[] tableau)
        {
            bool result = false;                        // valeur de retour
            if (tableau != null)
            {
                long NumTableau;                            // un numéro du tableau
                long numClient = client.NumClient;          // récupérer numéro du client
 
                foreach (var item in tableau)
                {
                    long.TryParse(item, out NumTableau);    // tenter la conversion de l'élément en long
                    if (numClient == NumTableau)            // si ce numéro est celui du client
                    {
                        result = true;                      // on a trouvé
                        break;                              // et fin de la recherche
                    }
                }
            }
            return result;
        }
Merci d'avance

Claude