778 Stimmen

LINQ verwenden, um Elemente aus einer List<T> zu entfernen

Angenommen, ich habe LINQ-Abfrage wie:

var authors = from x in authorsList
              where x.firstname == "Bob"
              select x;

Angesichts der Tatsache, dass authorsList ist vom Typ List<Author> wie kann ich die Author Elemente aus authorsList die von der Abfrage zurückgegeben werden, in authors ?

Oder, anders ausgedrückt, wie kann ich alle Vornamen, die gleich Bob sind, aus authorsList ?

Hinweis: Dies ist ein vereinfachtes Beispiel für die Zwecke der Frage.

6voto

Sheo Dayal Singh Punkte 1405

Nachfolgend ein Beispiel für das Entfernen eines Elements aus der Liste.

 List<int> items = new List<int>() { 2, 2, 3, 4, 2, 7, 3,3,3};

 var result = items.Remove(2);//Remove the first ocurence of matched elements and returns boolean value
 var result1 = items.RemoveAll(lst => lst == 3);// Remove all the matched elements and returns count of removed element
 items.RemoveAt(3);//Removes the elements at the specified index

5voto

ebrown Punkte 811

Ich denke, Sie könnten so vorgehen

    authorsList = (from a in authorsList
                  where !authors.Contains(a)
                  select a).ToList();

Obwohl ich denke, dass die bereits genannten Lösungen das Problem auf eine besser lesbare Weise lösen.

1voto

aj go Punkte 545

Ich denke, Sie müssen nur die Elemente aus der Liste "Autor" einer neuen Liste zuweisen, um diesen Effekt zu erzielen.

//assume oldAuthor is the old list
Author newAuthorList = (select x from oldAuthor where x.firstname!="Bob" select x).ToList();
oldAuthor = newAuthorList;
newAuthorList = null;

0voto

Chris W Punkte 1482

Um den Code flüssig zu halten (wenn die Code-Optimierung nicht entscheidend ist), müssten Sie einige weitere Operationen an der Liste durchführen:

authorsList = authorsList.Where(x => x.FirstName != "Bob").<do_some_further_Linq>;

oder

authorsList = authorsList.Where(x => !setToRemove.Contains(x)).<do_some_further_Linq>;

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