Entfernen Sie ein bestimmtes Element aus einer Liste mit LINQ

7

Ich habe eine Liste mit einigen Objekten und möchte mit LINQ ein bestimmtes Element entfernen, bin mir aber nicht sicher, wie das geht.

%Vor%     
Lynct 28.11.2014, 20:10
quelle

4 Antworten

27

Sie können nicht verwenden a foreach zum Entfernen von Elementen während der Aufzählung, Sie erhalten zur Laufzeit eine Ausnahme.

Sie könnten List.RemoveAll verwenden:

%Vor%

oder, wenn es sich nicht um eine List<T> , sondern um eine beliebige Sequenz handelt, LINQ:

%Vor%

Wenn Sie sicher sind, dass nur ein Element mit dieser Nummer vorhanden ist oder Sie ein Element maximal entfernen möchten, können Sie entweder den in der anderen Antwort vorgeschlagenen for-loop-Ansatz verwenden oder:

%Vor%

Der Link zu der anderen Frage, die ich geschrieben habe, legt nahe, dass Sie eine Auflistung während der Aufzählung in C # 4 und höher ändern können. Nein, das kannst du nicht. Dies gilt nur für die neuen gleichzeitigen Sammlungen .

    
Tim Schmelter 28.11.2014, 20:17
quelle
2

Sie können foreach nicht verwenden, um Objekte aus der Sammlung zu entfernen. Dies wird eine Ausnahme auslösen, dass die Sammlung geändert wird.

Sie können es mit

durchführen %Vor%

Anderenfalls verwenden Sie Remove/RemoveAll like Tim Schmelter show.

    
mybirthname 28.11.2014 20:22
quelle
1

Sie können eine foreach-Schleife verwenden, um ein Element aus einer Liste zu entfernen. Wichtig ist, dass Sie mit break die Schleife anhalten, sobald Sie das Element entfernt haben. Wenn die Schleife fortgesetzt wird, nachdem ein Element aus der Liste entfernt wurde, wird eine Ausnahme ausgelöst.

%Vor%

Dies funktioniert jedoch nur, wenn nur ein Objekt wie in Ihrem Fall entfernt werden soll.

    
haagel 17.11.2017 10:47
quelle
-1

Sie können den Index entfernen, wenn der Wert den Kriterien

entspricht %Vor%     
SuncoastOwner 28.11.2014 20:34
quelle

Tags und Links