Je ne sais pas ce qui ne va pas ici, lorsque j'exécute l'application, il est indiqué que "la méthode spécifiée n'est pas prise en charge" pointant sur "résultat variable dans la requête" dans la boucle de Foreach. S'il vous plaît aider ...
var query = from c in entities.Customer
select c.CustomerName;
List<string> customerNames = new List<string>();
foreach (var result in query)
{
customerNames.Add(result.ToString());
}
5 Réponses :
Pouvez-vous essayer d'utiliser uniquement la méthode tolist () code> au lieu du foreach code>? List<string> customerNames = query.ToList();
C'est définitivement la voie à suivre mais je ne vois pas comment cela résout le problème.
Oui, ce sera la bonne façon de remplir la liste de la requête. Le plus simple possible.
Essayez de supprimer .tostring () code> et voyez si cela fonctionnera: foreach (var result in query)
{
customerNames.Add(result);
}
Essayez ceci
Si le problème n'est pas En outre, la structure de l'exception doit indiquer surlose quelle est la méthode non prise en charge. P> Tostring () Code> comme Gart mentionné ma deuxième chutes suspectes dans C.Customername code>. Est-ce une propriété personnalisée dans votre classe partielle? P>
La raison de votre erreur est la portée, ce que la "méthode non prise en charge" "vous dit.
Cela se produit généralement lors de l'utilisation d'une linq pour [remplir dans le blanc] orm. Donc, je suppose que vos entités doivent provenir d'un outil orm, quelque chose comme le cadre d'entité, et vous utilisez quelque chose comme Linq vers des entités. P>
Lorsque vous utilisez LINQ, votre requête n'est pas énumérée avant d'y accéder. , qui pour un orj signifie frapper la base de données ou autre référentiel de données. Cette action retardée peut entraîner un comportement étrange si vous ne le savez pas, c'est là, tel que cette erreur. P>
mais, vous avez un code local (non linq) et votre requête entrelacée, donc la linq à [ ] Le compilateur ne sait pas comment gérer votre code local lors de la compilation du code LINQ. Ainsi, l'erreur "méthode non prise en charge" - elle est fondamentalement la même que de référencer une méthode privée de l'extérieur de la classe, la méthode que vous appelée est inconnue dans la portée actuelle. P>
En d'autres termes, le compilateur essaie Pour compiler votre requête et appuyez sur la base de données lorsque vous effectuez le résultat.Tostring (), mais ne sait rien à propos de la variable privée des noms personnalisés ou de la méthode de Foreach. La logique de la base de données et la logique d'objet locale doivent être séparées - résolvez complètement les résultats de la requête de la base de données avant d'utiliser localement. P>
Vous devriez pouvoir l'écrire comme ceci: P>
var query = from c in entities.Customer
select c.CustomerName;
var qryList = query.ToList();
List<string> customerNames = new List<string>();
foreach (var result in qryList)
{
customerNames.Add(result.ToString());
}
Vous avez raison que j'utilise le cadre d'entité. Utilisation de votre solution, je reçois la même erreur dans cette ligne: Var Qrylist = Query.tolist (); Merci pour votre bonne explication.
à quelle ligne? Le seul endroit apparent pour l'erreur est le résultat.
est une console.writeine (résultat.Tostring ()); travail?