22 Stimmen

LINQ Nächstes Element in Liste

Ein Blick auf meine Frage HIER möchte ich nun die nächste Empfehlung Objekt (nach) demjenigen, das die Kriterien erfüllt.

Angenommen, ich habe Artikel 6 von 10 gefunden, dann möchte ich, dass die Abfrage stattdessen Artikel 7 zurückgibt.

Oder gibt es einen besseren Weg?

1voto

Alex Logvin Punkte 644

Wenn Sie sicher sind, dass:

  • der Eintrag ist einzigartig in der Liste
  • das Element wird aus derselben Liste entnommen
  • gibt es den nächsten Punkt

Sie können den nächsten Punkt auf diese Weise erhalten

myList[myList.IndexOf(item) + 1];
// or
myList.ElementAt(myList.IndexOf(item) + 1);

Wenn Sie sich nicht sicher sind, gibt es noch einen weiteren Punkt, den Sie verwenden können try + catch oder:

myList.ElementAtOrDefault(myList.IndexOf(item) + 1);

0voto

spoulson Punkte 20898

Stimmt Element 7 mit Ihrer Where-Klausel überein? Wenn ja, verwenden Sie die Skip() y Take() Erweiterungsmethoden:

var myProducts =
   from rp in recommendations
   where
      cp.Products.Any(p => p.Product.Code == "A") &&
      cp.Products.Any(p => p.Product.Code == "B")
   select rp;

var nextProduct = myProducts.Skip(1).Take(1);

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