211 Stimmen

Die Sequenz enthält keine Elemente?

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.

6voto

Mihai Cristian Punkte 85

Ich hatte eine ähnliche Situation bei einer Funktion, die den Durchschnitt berechnet.

ws.Cells[lastRow, startingmonths].Value = lstMediaValues.Average();

Der Fall ist gelöst:

ws.Cells[lastRow, startingmonths].Value = lstMediaValues.Count == 0 ? 0 : lstMediaValues.Average();

2voto

Siddarth Kanted Punkte 5430

Grund für den Fehler:

  1. Die Anfrage from p in dc.BlogPosts where p.BlogPostID == ID select p gibt eine Sequenz zurück.

  2. Single() versucht, ein Element aus der in Schritt1 zurückgegebenen Sequenz abzurufen.

  3. Gemäß der Ausnahme - Die in Schritt1 zurückgegebene Folge enthält keine Elemente.

  4. Single() versucht, ein Element aus der in Schritt1 zurückgegebenen Sequenz zu finden, die keine Elemente enthält.

  5. Seit Single() nicht in der Lage ist, ein einzelnes Element aus der in Schritt1 zurückgegebenen Sequenz zu holen, wird ein Fehler ausgegeben.

Reparieren:

Stellen Sie sicher, dass die Abfrage (from p in dc.BlogPosts where p.BlogPostID == ID select p)

gibt eine Folge mit mindestens einem Element zurück.

0voto

Wafeelka Punkte 11

Bitte überprüfen Sie Ihre Verbindungszeichenfolge, vielleicht ist sie falsch. Das war mein Fall.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X