Entfernen eines bestimmten Elements aus einer Liste mit LINQ
Habe ich eine Liste mit einigen Objekten und wollen mit LINQ zu entfernen, die ein bestimmtes Element, aber bin mir nicht sicher, wie das zu tun.
foreach (var someobject in objectList)
{
if (someobject.Number == 1) //There will only one item where Number == 1.
{
list.remove(someobject)
}
}
- So, Ihr code nicht funktioniert oder was?
- Im Gegensatz zu dem, was Sie fordern, Ihren aktuellen code nicht mit LINQ an alle. Haben Sie konkrete Gründe für den Wunsch/die Notwendigkeit eines LINQ-basierte Lösung? Oder würde jede andere effiziente Lösung akzeptabel, auch?
- Der obige code kann möglicherweise nicht arbeiten, weil es Syntaxfehler enthält –
list.remove(someobject)
. - Was ist
list
undobjectList
? Sind Sie beide gedacht werden gleiche Variablen-oder was? Und was ist das problem mit dem aktuellen code? - nun ja, ich dachte, es war nur ein Tippfehler, jedenfalls, wenn es der code sollte funktionieren, obwohl es nicht optimal ist
Du musst angemeldet sein, um einen Kommentar abzugeben.
Du nicht ein
foreach
, um Elemente zu entfernen während der enumeration, sind Sie immer eine Ausnahme zur Laufzeit.Könnten Sie
Liste.RemoveAll
:oder, wenn es nicht tatsächlich ein
List<T>
aber jede Sequenz, LINQ:Wenn Sie sicher sind, dass es nur ein Element mit der entsprechenden Nummer oder Sie möchten, entfernen Sie ein Element auf die maximale Sie können entweder die for-Schleife Ansatz vorgeschlagen, in die andere Antwort oder so:
Den link zu der anderen Frage habe ich geschrieben deutet darauf hin, dass Sie ändern können, eine Abholung während der enumeration in C# 4 und höher. Nein, das können Sie nicht. Das gilt nur für die neue concurrent-collections.
Können Sie nicht verwenden Sie foreach zu entfernen eines Elements aus der Auflistung. Dies wird eine Ausnahme ausgelöst, dass die Auflistung geändert wird.
Können Sie es mit für
Anderen Fall ist die Verwendung
Remove/RemoveAll
wieTim Schmelter
zeigen.break
nachdem Sie eine übereinstimmung finden, gibt es keinen Grund zu wechseln, derforeach
Schleife zu einemfor
Schleife.KÖNNEN Sie mit einer foreach-Schleife zum entfernen eines Elements aus einer Liste. Das wichtigste ist die Verwendung von break um die Schleife zu stoppen, sobald Sie den Artikel entfernen. Wenn die Schleife fortgesetzt wird, nachdem ein Element aus der Liste entfernt, wird eine Ausnahme geworfen.
Allerdings wird dies NUR funktionieren, wenn es nur ein Objekt, das Sie entfernen möchten, wie in Ihrem Fall.
Ihnen entfernen konnte, auf den index, wenn der Wert den Kriterien entspricht, die