Ich verwende derzeit eine einzige Abfrage an zwei Stellen, um eine Zeile aus einer Datenbank abzurufen.
BlogPost post = (from p in dc.BlogPosts
where p.BlogPostID == ID
select p).Single();
Die Abfrage ist in Ordnung, wenn sie die Zeile abruft, um Daten in die Textfelder einzugeben, aber sie gibt eine Fehlermeldung "Sequence contains no elements" zurück, wenn sie verwendet wird, um die Zeile abzurufen, um sie zu bearbeiten und sie wieder in die Datenbank einzugeben. Ich kann nicht verstehen, warum es in einem Fall eine passende Zeile findet, in einem anderen aber nicht.
(Mit ASP.NET MVC und LINQ)
24 Stimmen
Sie müssen SingleOrDefault verwenden, da es null zurückgibt, wenn keine Elemente zurückgegeben werden.
0 Stimmen
Die Fehlermeldung besagt, dass keine Elemente in dc.BlogPosts gefunden werden können, die dem Wert von ID entsprechen. Entweder hat ID keinen Wert oder die Elemente in Ihrer Liste enthalten dieses Element. Verwenden Sie SingleOrDefault oder FirstOrDefault, diese geben ein Null-Objekt zurück, wenn kein Element gefunden wurde, anstatt einen Fehler zu melden.
0 Stimmen
Es geht hier nicht darum, die Bedeutung von "Sequence contains no elements" zu erklären, wie viele anscheinend denken, sondern warum es vorkommt. Diese Frage kann nicht beantwortet werden, weil es an Details fehlt.