Diskussion:LINQ
Versionsangaben
BearbeitenIm Text ist von "...Programmiersprache wie etwa C# 3.0, VB.Net 9.0" die Rede. Meiner Meinung nach sollten entweder Konsequent die Versionen des Visual Studios oder wirklich die der Sprachen angewendet werden. C# hat, soviel ich weiss, im VS 2008 die Version 9.X. Zum Verifizieren in einer VS Konsole "csc" bzw. "vbc" eintippen. In meine VS 2005 antworten beide mit V8.X. Lange Rede kurzer Sinn, wie wärs konsequenterweise mit "...Programmiersprache wie etwa C# 9.0, VB.Net 9.0"? --Enrico.Biondi 16:59, 12. Mär. 2008 (CET)
- Was hat denn die Compiler-Version mit der Version der Programmiersprache zu tun? Zudem gibt der C#-Compiler, der direkt beim Framework mitgeliefert wird, Version 3.5.21022.8 bei der Framework-Version 3.5 aus, während der VB-Compiler Version 9.0.21022.8 angibt. --STBR – !? 17:14, 12. Mär. 2008 (CET)
Es kann durchaus sein dass ich zum Schluss mit der aktuellen Darstellung einverstanden bin, hier trotzdem meine Gedanken.
C# und VB.NET sind beides .NET Sprachen (ich weiss VB hat eine lange Geschichte, aber VB.NET ist eine neue Sprache für .NET). Weshalb soll die eine .NET Sprache in V3, die Andere bereits zu V9 angewachsen sein?
Als Programmierer bin ich es gewohnt zu spezifizieren mit welcher Version mein Code kompiliert. Da dies eine verbindliche Angabe sein soll, verwende ich die Versionsangabe des Compilers. Welcher Sprachversion dies entspricht ist hoffentlich irgendwo festgehalten?!? Dass die Compiler von SDK und VS unterschiedliche Versionen, trotz identischem Verhalten melden, ist für mich sehr befremdend. --217.167.123.91 08:54, 13. Mär. 2008 (CET)
- Nunja, VB.NET wird bei Microsoft wohl als eine Evolution aus VB6 angesehen, weswegen die dort bereits bei V9 angelangt sind. Zieht man davon die 6 Versionen des klassischen VB ab, sind wir auch bei V3. Was das Compilieren angeht: Bei .NET muss es heißen, auf welche Plattform-Version der Code compiliert, und die legst du in den Properties der einzelnen Projekte in VS fest. Die ist aber unabhängig von der Compiler-Version. --STBR – !? 09:38, 13. Mär. 2008 (CET)
OK, scheint dass Du Recht hast, auch wenn es mich persönlich weiterhin stört, dass zwei .NET Sprachen Versionsmässig derart weit auseinander liegen. --Enrico.Biondi 11:28, 13. Mär. 2008 (CET)
Das Beispiel sollte keine Foreach Schleife verwenden. Foreach-Schleifen geben die Werte einer Auflistung zwar meistens in der Reihenfolge der Aufliestung zurück, es kann aber auch vorkommen dass die Reihenfolge zufällig ist. Wenn man sicher gehen möchte, dass man eine Auflistung (auch in künftigen Sprachversionen u. .Net-Versionen) in der richtigen Reihenfolge bekommt, sollte man eine normale For-Schleife anwenden. 16:31, 11. Mai 2008
Falscher initialer Fokus für nicht-inkorrekte, allgemeine und verständliche Erklärung
BearbeitenIch glaube, dass man das ganze verständlicher (und trotzdem allgemein) darstellen kann, wenn man
- nicht von .NET allgemein ausgeht, sondern sich stattdessen auf C# konzentriert (dass das in anderen Sprachen auch funktioniert, ist ein ziemlich trivialer Fakt, wenn man bedenkt, dass so ungefähr das einzige auf .NET verallgemeinerbare die festgelegten Methodennamen sind),
- sich nicht auf Datenabfrage spezialisiert, sondern von vorn herein eher nur die Natur von LINQ-Ausdrücken als syntaktischen Zucker für "normalen" C#-Code mit Methodenaufrufen (richtige Methoden oder extension methods) und Lambda-Ausdrücken (interpretierbar als Syntaxbaum oder als Delegate) beleuchtet.
Also: Wenn man die (relativ unnützliche) Verallgemeinerung auf .NET fallenlässt, lässt sich z.B. die Übersetzung von Abfrageausdrücken genau genug betrachten und dabei das wirklich allgemein benötigte Interface (ungefähr Monade (Informatik)) anstelle von "Abfrage von Datenquellen" beleuchten, das dann auch [1] und [2] umfasst.
Gedanken, Meinungen, Vorschläge? --Daniel5Ko 22:51, 27. Okt. 2010 (CEST)
- Das schlimme ist, selbst von MSDN kann man sich nicht inspirieren lassen, denn selbst dort [3] steht Unfug wie "Die Abfrage wird so lange nicht ausgeführt, bis Sie die Abfragevariable in einer foreach-Anweisung durchlaufen", der aus zu starker Spezialisierung entsteht. LINQ hat eigentlich nichts mit foreach zu tun :( . Schwierig... --Daniel5Ko 23:10, 27. Okt. 2010 (CEST)
- Vorschläge:
- Die Einleitung in einen Abschnitt packen, der Linq in welchem Kontext auch immer beleuchtet, aber
- Die Einleitung selbst allgemeinverständlich nach WP:OMA gestalten.
- Dann kann der Laie beim Drüberlesen feststellen, was das überhaupt ist und gleichzeitig der Versierte tiefergehende Infos aus dem Artikel ziehen. Derzeit ist die Einleitung nicht laienverständlich und mit Spezialwissen und Fachausdrücken überfrachtet.--Trac3R 15:28, 23. Dez. 2011 (CET)
- Vorschläge:
Hab den gesamten Einleitungsteil überarbeitet und bequellt. --Mussklprozz (Diskussion) 10:24, 29. Okt. 2012 (CET)
- Warum hast du die Quellen, die du angabst, nicht gelesen? "[...] stellt LINQ jedoch auch Sprachelemente zur Verfügung, die speziell zum Zugriff auf hierarchische und Netzwerk-Strukturen geeignet sind" ist z.B. Unfug. Zusammen mit der angegebenen Quelle erst recht (einfach mal ein paar Sätze weiterlesen...).
- Nichts an LINQ ist irgendwie "speziell". Wenn du Lust hast, etwas sinnvolles zu schreiben, wäre die Lektüre von z.B. der C# >2 -Sprachspezifikation sinnvoll. Auch gibt es mittlerweile Zeug in Lehrbuchform (http://books.google.de/books?id=N_TTarWp-scC&printsec=frontcover&hl=de#v=onepage&q&f=false , da speziell ab S. 411, Unterabschnitt "LINQ Queries", im Kapitel "Reactive extensions"), das vielleicht dabei hilft, die üblichen Mythen zu beseitigen. Falls man gerade in Zeitverschwendungslaune ist, kann man auch z.B. http://www.youtube.com/watch?v=l2mgP20tisE oder http://www.youtube.com/watch?v=VNJkVeoyEAg anschauen. --Daniel5Ko (Diskussion) 02:42, 31. Okt. 2012 (CET)
- Pialorsi/Russo 2010 beschäftigen sich auf S. 8–14 damit. S. 8: „... LINQ is not limited to a single data representation model like the relational one, where relationships between entities are expressed inside a query but not in the data model“. Dann, auf Seite 9: ... „when your data model already defines relationships, you can use them, avoiding replication (...) of the same information“. Dazwischen erläuternde Beispiele, die unter anderem zeigen, wie man mittels geschachtelter from-Operationen eine hierarchische Beziehung Objekt-Beziehung nutzen kann, ohne dass eine Join-Operation nötig ist. Zur Syntax und den Sprachelementen habe ich vor, noch einen Abschnitt einzuschieben, unter Verwendung von Pialorsi/Russo 2010, S. 23–48. --Mussklprozz (Diskussion) 08:30, 31. Okt. 2012 (CET)
- „Nichts an LINQ ist irgendwie speziell?“ Andere sehen das offenbar anders als Du: „Each implementation is defined through a set of extension methods that implement the operrators needed by LINQ to work with a particular data source.“ (Pialorsi/Russo 2010, S. 20, Hervorhebung von mir). --Mussklprozz (Diskussion) 11:03, 31. Okt. 2012 (CET)
- Zum "speziell": Wenn ich einen C-Interpreter geschrieben habe, ist das nicht das selbe, als hätte ich alle speziellen C-Programme oder auch nur einen signifikanten Anteil geschrieben. Auch habe ich keine speziellen Features bereitgestellt, die es erlauben, spezielle C-Programme zu schreiben. Die "LINQ-Provider" sind für mich kein Bestandteil von LINQ, weil das keinen Sinn ergäbe. ("Die" LINQ-Provider als ganzes gibt's außerdem eigentlich nicht. Wer es für sinnvoll erachtet, aus seiner wie auch immer gearteten Bibliothek die entscheidenden Monaden (falls vorhanden) als LINQ-Provider zu exponieren, tut das halt.)
- Zu dem davor: Wie gesagt, die LINQ-Provider machen eigentlich alles, was es an Arbeit gibt. Der sinnvollerweise als LINQ zu bezeichnende Teil von etwa C# hält sich raus, und kann gar nicht irgendwas spezielles zur Verfügung stellen. Wie du von "LINQ is not limited to a single data representation [etc.]" auf "[...]speziell zum Zugriff auf hierarchische und Netzwerk-Strukturen geeignet sind[...]" kommst, und warum das überhaupt so extrem erwähnenswert sein soll, ist mir schleierhaft.
- --Daniel5Ko (Diskussion) 03:51, 1. Nov. 2012 (CET)
Überarbeiten gemäß "Was Wikipedia nicht ist"
BearbeitenNach dem aktuellen Ausbau ist Punkt 9 von WP:WWNI verletzt. In dieser Ausführlichkeit sollten die Details vielmehr bei Wikibooks dargestellt werden. Dort gibt es zum Beispiel das Buch Arbeiten mit .NET. Man sieht auch bereits am Inhaltsverzeichnis, dass der Artikel sehr unausgewogen ist betreffs der Detailliertheit der Inhalte. Zudem ist der Artikeltext wieder deutlich unverständlicher für Laien geworden. Im aktuellen zustand stellt der Artikel einen zu großen Spagat dar zwischen Detailinfos und einem ersten Überblick. --Hamburger (Disk) 17:16, 27. Mär. 2013 (CET)
- Alles klar. In diesem Fall schlage ich vor im Wikibook für .NET ein eigenes Kapitel einzurichten und die entsprechenden Abschnitte zu verschieben. Kannst du das übernehmen? Ich hatte mit Wikibooks bisher nichts zu tun und finde mich im .NET Buch nicht zurecht; bzw. gibt es noch kein entsprechendes Kapitel :( — MovGP0 20:28, 27. Mär. 2013 (CET)
- Danke für dein Feedback! Das schaffe ich aus privaten Gründen leider nicht. Ich bin bis mindestens Mitte Mai nur in kurzen Arbeitspausen auf der WP am werkeln. Für einen Transfer zu Wikibooks wäre es aber wohl angemessen etwas mehr Zeit einzuplanen. Vielleicht kannst du den Hauptautor Juetho um Unterstützung bitten? --Hamburger (Disk) 21:55, 27. Mär. 2013 (CET)
- Schaut bei mir nicht besser aus ;) Habe Juetho auf seiner Benutzerseite kontaktiert. Also erst mal abwarten und Tee trinken. — MovGP0 02:05, 28. Mär. 2013 (CET)
- Da sich hier seit fast zwei Jahren nix mehr getan hat, würde ich diesen Fall gerne aufwärmen. Gleich vorweg: Der Artikel ist wirklich gut geschrieben, aber die Ausführlichkeit, mit dem Details hier ausgebreitet werden, erschlägt den Durchschnittsleser (Regeln hin oder her). Das würde ich tatsächlich 1:1 ach Wikibooks verschieben, von diesem Artikel aus verlinken und hier nur eine knappe Zusammenfassung stehen lassen. Wer macht mit? --Jacek79†The other side† 16:25, 1. Feb. 2015 (CET)
- Stand 13.09.2015 - Ich habe mich gerade hier im Artikel über LINQ informiert, die Beispiele helfen sehr die Konzepte zu verstehen. Ich sehe hier keine Anleitung die verschoben werden müsste oder sollte. Ich bin dankbar für die Beispiele hier an dieser Stelle und sie haben sehr geholfen ein erstes Bild von den Konzepten zu gewinnen. So sehe ich die Intention von Wikipedia. Also alles ok ;-) --178.203.102.60 09:55, 13. Sep. 2015 (CEST)
Degenerative Abfragen
BearbeitenDer Abschnitt ist nicht belegt. Bei einer Webrecherche finde ich nichts über „degenerative Queries“, und auch das 650-seitige Kompendium von Pialorsi und Russo, Programming Microsoft LINQ in Microsoft .NET Framework 4 gibt dazu nichts her. Er ist darüber hinaus nicht nachvollziehbar: warum sollte ich bei einer ungefilterten oder nicht sortierten Liste den komplizierteren Weg wählen? Ich lösche den Abschnitt. --Mussklprozz (Diskussion) 14:39, 22. Mär. 2014 (CET)
Wichtige Infos fehlen
Bearbeiten…nämlich:
- Welche .NET-Version unterstützt Linq wie gut? Wie hat sich die Unterstützung in neueren Versionen entwickelt? Es hängt alles ja von der Runtime-Version ab, nicht von der eingesetzten Sprache.
- Wie sieht es bei alternativen .NET-Implementierungen wie Mono aus?
- Welche NoSQL-Datenbanksysteme unterstützt Linq? Die alten Dinos wie IMS (hierarchisch) und UDS (netzwerkorientiert) auch?
- Womit wir bei hierarchischen Datenstrukturen sind. Die kann man vielfach auch mit SQL abfragen, sofern eine passende Schnittstelle zur Verfügung steht, nur lässt sich dann nicht jeder beliebige SQL-Befehl ausführen. In dieser Hinsicht ist Linq also nichts Neues.
- Lassen sich mit Linq auch Stored Procedures aufrufen?
- Wie sieht es punkto Prepared Statements und parametrisierte Abfragen aus?
- Was sind die Nachteile von Linq gegenüber SQL?
Abschnitt Arbeitsweise
Bearbeiten„LINQ ist eine Sammlung von Erweiterungsmethoden, die auf Monaden operieren. Zudem gibt es in einigen .NET Sprachen wie C#, VB.NET und F# eigene Schlüsselwörter für eine vorbestimmte Menge an LINQ-Methoden. Monaden werden in .NET als generische Klassen oder Interfaces mit einzelnem Typargument (z. B. IEnumerable<T>, IObservable<T>) abgebildet.“ – Dieser Satz glänzt mit dem Fachwissen seines Autors oder seiner Autoren. Eine Einführung für Leser, die nicht über dieses Fachwissen verfügen, leistet er nichts. Der Link Monaden hilft nicht weiter. Vom Einleitungssatz dort bekommt derjenige, der nicht ohnehin weiß, worum es geht, höchstens Kopfweh. --Mussklprozz (Diskussion) 10:20, 13. Sep. 2015 (CEST)
Defekter Weblink
BearbeitenDer folgende Weblink wurde von einem Bot („GiftBot“) als nicht erreichbar erkannt. |
---|
|
- http://research.microsoft.com/en-us/um/people/emeijer/
- Vielleicht ist eine archivierte Version geeignet: archive.org
- Serverproblem (HTTP-Statuscode 500) andere Artikel, gleiche Domain