Vor einiger Zeit habe ich an einem ziemlich verdrehten Projekt gearbeitet - ich konnte den Code nur in den einzelnen Bereich schreiben und er würde später in eine C# -Funktion (von einem anderen Modul) eingefügt werden.Ist es möglich, Linq und Lambdas ohne einen System.Linq-Namespace zu verwenden?
ich nur Namespaces, die vor deklariert wurden verwenden könnte (ich auf sie keinen Einfluss hatte) und nur Variablen vom Umfang nutzen konnte ich gearbeitet. Aus diesem Grund war ich nicht in der Lage die Header zu ändern und enthalten Bibliotheken .
Das Problem kam, wenn ich auf generische Sammlungen arbeiten wollte - ich konnte weder Lambda-Ausdrücke noch LINQ verwenden - ich war einfach nicht in der Lage, using System.Linq;
zu setzen, da ich keinen Zugriff auf den Dateiheader hatte.
Ich musste nur eine einfache Sache tun und es war einfach, ohne LINQ oder Lambda zu verwalten. Danach habe ich mich gefragt, was passieren würde, wenn ich komplexere Operationen auf IEnumerable mit durchführen müsste. Daraus kommt meine Frage:
Ist es möglich, LINQ oder Lambdas zu verwenden, ohne den Dateiheader zu ändern und neue Namespaces hinzuzufügen?
Nehmen wir an, wir haben eine List<int> _Numbers = new List<int>();
. Lass es mit einigen Zahlen gefüllt werden. Jetzt möchte ich alle geraden Zahlen daraus auswählen.
Mit using System.Linq;
im Header ist die Lösung auf der Hand:
List<int> _NewList = _Numbers.Where(n => n % 2 == 0).ToList();
oder
List<int> _NewList = (from _Number in _Numbers where _Number % 2 == 0 select _Number).ToList();
Aber ohne LINQ enthalten, wie kann ich das erreichen? Meine erste Vermutung wäre so etwas wie:
List<int> _NewList = System.Linq. // ??? What to add here?
Ich bin mir bewusst, dass das Problem eher exotisch ist, und es ist sehr ungewöhnlich, diesen Weg zu gehen, aber ich bin nur neugierig, und ich habe keine Informationen darüber gefunden Fall.
'System.Linq.Enumerable.Where (_NeueListe, n => n% 2 == 0)' –
@nsinreal - danke, das ist genau das, was ich gesucht habe. Fügen Sie das als Antwort hinzu und ich werde es als korrekt markieren;) –
Sie können auch 'using'-Anweisungen in die Namespace-Deklaration einer Klasse aufnehmen. Ist das noch außerhalb des Bereichs, auf den Sie Zugriff haben? – Sam