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 :
Mais pas celle-ci ?
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();
dans le second cas, j'obtiens une erreur :
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();
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?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.
Pour information, voici la méthode "EstDansLeTableau", qui est toute bête :
Merci d'avance
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; }
Claude
Partager