J'utilise actuellement une seule requête à deux endroits pour obtenir une ligne à partir d'une base de données.
BlogPost post = (from p in dc.BlogPosts
where p.BlogPostID == ID
select p).Single();
La requête est correcte lors de la récupération de la ligne dans laquelle placer des données dans les zones de texte, mais elle renvoie une erreur «La séquence ne contient aucun élément» lorsqu'elle est utilisée pour récupérer la ligne afin de la modifier et de la remettre dans la base de données. Je ne peux pas comprendre pourquoi il pourrait trouver une ligne appropriée dans une instance mais pas dans une autre.
(Utilisation d'ASP.NET MVC et LINQ)
Réponses:
Mettez un point d'arrêt sur cette ligne, ou un Debug.Print avant, dans les deux cas et voyez ce que contient l'ID.
la source
À partir de " Correction d'une erreur LINQ: la séquence ne contient aucun élément ":
Cela peut également être causé par les commandes suivantes:
FirstAsync()
SingleAsync()
Last()
LastAsync()
Max()
Min()
Average()
Aggregate()
la source
ctx.Rosters.First(c => c.RosterAccess == accCode);
<- casséctx.Rosters.FirstOrDefault(c => c.RosterAccess == accCode);
<- TRAVAILLÉMax
séquence videLastOrDefault()
peut également déclencher cette erreur? Pourquoi ? Je pensais que le "OrDefault" était tout le pointVeuillez utiliser
car si dans la première ligne du résultat il n'y a pas d'informations, cette instruction va aux informations par défaut.
la source
Eh bien, qu'est-ce qu'il y a
ID
ici? En particulier, s'agit-il d'une variable locale? Il y a quelques problèmes de portée / capture, ce qui signifie qu'il peut être souhaitable d'utiliser une deuxième copie de variable, juste pour la requête:Aussi; s'il s'agit de LINQ-to-SQL, dans la version actuelle, vous obtenez un comportement légèrement meilleur si vous utilisez le formulaire:
la source
Cela résoudra le problème,
la source
En plus de tout ce qui a été dit, vous pouvez appeler
DefaultIfEmpty()
avant d'appelerSingle()
. Cela garantira que votre séquence contient quelque chose et évite ainsi l'exception InvalidOperationException "La séquence ne contient aucun élément". Par exemple:la source
J'ai eu une situation similaire sur une fonction qui calcule la moyenne.
Exemple:
Cas résolu:
la source
Raison de l'erreur:
La requête
from p in dc.BlogPosts where p.BlogPostID == ID select p
renvoie une séquence.Single()
essaie de récupérer un élément de la séquence renvoyée à l'étape 1.Selon l'exception - La séquence retournée à l'étape1 ne contient aucun élément.
Single () essaie de récupérer un élément de la séquence retournée à l'étape 1 qui ne contient aucun élément.
Comme il
Single()
n'est pas en mesure d'extraire un seul élément de la séquence retournée à l'étape 1, il génère une erreur.Réparer:
Assurez-vous que la requête
(from p in dc.BlogPosts where p.BlogPostID == ID select p)
renvoie une séquence avec au moins un élément.
la source