LINQ ist nicht nur ein ORM-System, da Jonathan darauf hinweist, dass es viele funktionale Programmierelemente zu C# bringt. Und es lässt Sie eine Menge "Datenbank-y" Sachen im normalen C# Code tun. Es ist schwer zu erklären, wie unglaublich mächtig das sein kann. Überlegen Sie, inwieweit solide, gut gestaltete generische Datenstrukturen (wie Liste, Stapel, Wörterbuch/Hash usw.), die in gängigen Frameworks enthalten sind, den Entwicklungsstand moderner Sprachen verbessert haben. Gerade weil die Verwendung dieser Datenstrukturen sehr gebräuchlich ist und der intellektuelle Aufwand, sie zu verwenden, reduziert wird, ist ein großer Vorteil. LINQ macht nichts, was Sie nicht selbst tun können, aber es macht viele Operationen viel einfacher und viel einfacher.
Betrachten Sie das altehrwürdige Beispiel zum Entfernen von Duplikaten aus einer nicht geordneten Liste. In einer niedrigeren Programmiersprache wie C oder C++ müssten Sie die Liste wahrscheinlich sortieren und zwei Indizes in der Liste beibehalten, wenn Sie die Duplikate entfernen. In einer Sprache mit Hashes (Java, C#, Javascript, Perl usw.) könnten Sie einen Hash erstellen, bei dem die Schlüssel die eindeutigen Werte sind, und dann die Schlüssel in eine neue Liste extrahieren.Mit LINQ können Sie dies nur tun:
int[] data = { 0, 1, 3, 3, 7, 8, 0, 9, 2, 1 };
var uniqueData = data.GroupBy(i => i).Select(g => g.Key);
Das war gut, danke. Ich bin interessiert, in Ihren beiden Codebeispielen wäre die LINQ-Version schneller als die "Original" -Version? –
LINQ wird die Komplexität der Zeit jedoch nicht magisch nehmen. Also, ja, es sieht schöner aus, aber wenn es optimiert ist, ist es nur ein wenig. – mmcdole
Was ist nett, weil ich die Ausdruckssyntax hasse. –