Ich habe mal eine Videoserie erstellt, die genau im Detail erklärt, wie LinQ (Language-integrated Query) in .NET eigentlich genau funktioniert und auf welchen Mechanismen es aufbaut.
Denn nur wenn man weiß, wie was auf einem Raumschiff funktioniert, kann man Khan besiegen! 😉
Am besten guckt man sich die folgenden Videos direkt bei Youtube in der höchsten Auflösung und als Vollbild an. Ab Video 2 habe ich dann auch die Schrift im Visual Studio selbst größer gemacht, zwecks besserer Lesbarkeit.
Kapitel 1: IEnumerable
Kapitel 2: Yield Return
Kapitel 3: Funktionsdelegaten
Kapitel 4: Extension Methods
Kapitel 5: LinQ: Where
Kapitel 6: LinQ: Select, Any, All, Count, Except, Take
Deshalb fangen wir damit an, das Interface zu untersuchen, den jede Liste, jede Collection in .NET implementiert: IEnumerable
Eines der wichtigsten Statements im Zusammenspiel mit LinQ ist “yield return” und “yield break”.
Da im Hintergrund vom C# Compiler hier jede Menge Code geniert wird, sollten wir mal genauer drauf gucken, was genau eigentlich passiert.
Ein weiteres wichtiges Element zum Verständnis von LinQ sind Funktionsdelegaten, unter C++ auch als “function pointer” bekannt.
Und das letzte notwendige Grundlagenwissen für LinQ: Extension Methods. Was sie sind, was sie tun.
Jetzt geht es ans Eingemachte: In diesem Video werden wir mal erforschen, wie Where im Allgemeinen funktioniert und wie es eingesetzt wird.
Dann aber gehen wir richtig ins Detail und schreiben uns unsere eigene Implementierung von Where, um zu sehen, warum sich der Code so verhält, wie er es tut.
Und in diesem abschließenden Kapitel gucken wir uns mal die LinQ-Funktionen Select, Any, All, Count, Except und Take an und finden heraus, was sie genau tun und wofür sie gut sind.
Except: 0:40
Select: 4:57
Any: 7:33
Count: 14:28
All: 17:48
Take: 22:48
PS: Ich bin ein leidlich guter Programmierer, aber kein Videoschnittmeister, deshalb müsst ihr leider mit den “ähms” leben. 😉