Ich habe zwei Listen, eine enthält URLs und eine andere, die alle MIME-Dateierweiterungen enthält. Ich möchte alle URLs, die auf solche Dateien verweisen, aus der ersten Liste entfernen.Wie entferne ich Elemente aus der generischen Liste, basierend auf mehreren Bedingungen und mit linq
Beispielcode:
List<string> urls = new List<string>();
urls.Add("http://stackoverflow.com/questions/ask");
urls.Add("http://stackoverflow.com/questions/dir/some.pdf");
urls.Add("http://stackoverflow.com/questions/dir/some.doc");
//total items in the second list are 190
List<string> mime = new List<string>();
mime.Add(".pdf");
mime.Add(".doc");
mime.Add(".dms");
mime.Add(".dll");
Eine Möglichkeit, mehrere Elemente zu entfernen ist:
List<string> result = urls.Where(x => (!x.EndsWith(".pdf")) && (!x.EndsWith(".doc")) && (!x.EndsWith(".dll"))).ToList();
Allerdings gibt es mehr als 190 Erweiterungen in meiner zweiten Liste.
Die Frage - kann ich die Artikel aus der ersten Liste mit einem einzigen Liner entfernen oder nutzt eine foreach-Schleife die einzige Möglichkeit?
@AdamHouldsworth Autor verwendet den gleichen Ansatz denken sollte, wo er statt Entfernen von Elementen aus der Quelle eine neue Liste erstellt. Aber ja, habe meine Antwort mit dem tatsächlichen Entfernungscode aktualisiert. – MarcinJuraszek
Ja, das ist in Ordnung, ich habe nur eine Erklärung für Passanten hinzugefügt :-) –
'Any' Kurzschlüsse genau die gleiche Art und Weise' All' tut. http://referencesource.microsoft.com/#System.Core/System/Linq/Enumerable.cs1173 – MarcinJuraszek