Séquence contient pas d'éléments?
Je suis actuellement à l'aide d'une seule requête dans les 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 bien, lors de la récupération de la ligne pour mettre les données dans les cases de texte, mais il renvoie une erreur "Séquence contient pas d'éléments" lorsqu'il est utilisé pour récupérer la ligne de commande pour le modifier et le remettre dans la base de données. Je ne comprends pas pourquoi il pourrait trouver une ligne appropriée dans un cas mais pas dans une autre.
(À l'aide de ASP.NET MVC et LINQ)
vous devez utiliser SingleOrDefault , il va retourner la valeur null si aucun des articles retournés
OriginalL'auteur | 2009-08-24
Vous devez vous connecter pour publier un commentaire.
Mettre un point d'arrêt sur cette ligne, ou de Débogage.Impression devant elle, dans les deux cas et voir ce que l'ID contient.
Où vous attendiez-vous à l'ID?
Dans les postérieurs de vue, je ne suis vraiment pas sûr que >_< Idiot problème vraiment.
OriginalL'auteur Ryan Lundy
De "Fixation LINQ Erreur: Séquence contient pas d'éléments":
Cela peut aussi être causée par les commandes suivantes:
FirstAsync()
SingleAsync()
Last()
LastAsync()
Max()
Min()
Average()
Aggregate()
Parfait!
ctx.Rosters.First(c => c.RosterAccess == accCode);
<-- casséctx.Rosters.FirstOrDefault(c => c.RosterAccess == accCode);
<-- TRAVAILLÉDans mon cas, j'ai été faire un
Max
sur une séquence videKiernan: votre réponse résolu aujourd'hui, mon problème. Merci u. +1 pour ce..
Êtes-vous sûr que
LastOrDefault()
peuvent également déclencher d'erreur ? Pourquoi ? Je pensais que le "OrDefault" a été le point deOriginalL'auteur Tony Kiernan
Bien, qu'est-ce que
ID
ici? En particulier, est-il une variable locale? Il y a un peu de marge /problèmes d'acquisition, ce qui signifie qu'il peut être souhaitable d'utiliser une variable de copie, juste pour la requête:Aussi; si c'est de LINQ-to-SQL, puis dans la version actuelle, vous obtenez un peu mieux le comportement si vous utilisez le formulaire:
OriginalL'auteur Marc Gravell
Cela va résoudre le problème,
OriginalL'auteur Diganta Kumar
Veuillez utiliser
parce que si dans la première ligne du résultat il n'y a pas d'info de cet enseignement va à la valeur par défaut info.
OriginalL'auteur Josue Morales
En plus de tout ce qui a été dit, vous pouvez appeler
DefaultIfEmpty()
avant d'appelerSingle()
. Cela permettra d'assurer que votre séquence contient quelque chose et ce qui permet d'éviter la InvalidOperationException "Séquence contient pas d'éléments". Par exemple:OriginalL'auteur bryc3m0nk3y
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 retournée dans l'étape 1.Que par l'exception - La séquence retournée dans l'étape 1. ne contient aucun des éléments.
Unique() tente de récupérer un élément de la séquence retournée dans l'étape 1 qui ne contient pas d'éléments.
Depuis
Single()
n'est pas en mesure d'aller chercher un seul élément de la séquence retournée dans l'étape 1, il renvoie une erreur.Correctif:
Assurez-vous que la requête
(from p in dc.BlogPosts where p.BlogPostID == ID select p)
retourne une séquence présentant au moins un élément.
OriginalL'auteur Siddarth Kanted