Sprachintegrierte Abfragen
Geschrieben vonOssi Galkin Vor über einer Woche aktualisiertVerwenden von LINQ mit JSON-Objekten
Sprachintegrierte Abfrage (LINQ)ist eine Methode zum Abfragen von Daten mit vertrauter Syntax aus Abfragesprachen wie SQL. Sie können LINQ verwenden, um Listen oder Arrays abzufragen und Daten zu finden, die den gewünschten Regeln oder Mustern entsprechen. Zusätzlich zu iterierbaren Datentypen können Sie LINQ auch verwenden, um Daten in JObject abzufragen.
Nehmen wir das Beispiel aus dem vorherigen Modul, in dem wir mithilfe eines Wörterbuchs dynamisch ein neues JArray aus JSON-Eingabedaten erstellt haben. Nehmen wir an, wir möchten nur Daten von Personen unter 40 Jahren zuordnen. Wir können diese Regel mithilfe von LINQ implementieren. Zunächst müssen wir das ursprüngliche JArray stark als Objekt von JArray typisieren. In Frends werden alle in C#-Ausdrucks- oder C#-Anweisungselementen definierten Variablen dynamisch typisiert. Dies bedeutet, dass wir während der Kompilierung nicht wissen, welche Art von Daten in der Variable gespeichert sind. Um LINQ zum Abfragen von Daten in JArray zu verwenden, müssen wir die Variable, die das JArray enthält, explizit als JArray definieren. Dies kann durch Definieren des Variablentyps im C#-Ausdruckselement erfolgen.
Anschließend können wir die Foreach-Iteration aus dem Beispiel im letzten Modul, in dem wir das JArray iterieren wollten, anpassen. Diesmal wollen wir nur Personen abbilden, die unter 40 Jahre alt sind. Dies können wir mit der folgenden Abfrage tun:
Teilen wir diese Abfrage in kleinere Teile auf. Das Schlüsselwort „From“ gibt an, dass wir Daten aus „#var.jsonArray“ suchen möchten, was in diesem Fall ein JArray ist. Wir definieren eine Variable namens „people“, die ein einzelner Dateneintrag im JArray sein wird. Diese Variable wird stark typisiert alsJToken, eine übergeordnete Klasse für JArray und JObject. Das Where-Schlüsselwort definiert die Regel, die die gewünschten Daten aus dem JArray filtert. In dieser Regel haben wir definiert, dass wir Personen aus dem JArray finden möchten, die jünger als 40 Jahre sind. Da die Variable „people“ stark als JToken typisiert ist, können wir nicht die Punktnotation verwenden, um auf die Age-Eigenschaft zuzugreifen, sondern müssen JTokens verwenden.Klammersyntax. Wenn wir uns die Dokumentation ansehen, können wir sehen, dass die Klammersyntax von JToken den Wert im Schlüssel als JToken zurückgibt, sodass wir den Wert nicht mit einer Ganzzahl vergleichen können. Daher müssen wirgießendas JToken in eine Ganzzahl. Schließlich definiert das select-Schlüsselwort, was wir von der Abfrage zurückgeben möchten. In diesem Fall möchten wir den gesamten in der Variable „people“ gespeicherten Wert zurückgeben. LINQ gibt immer ein iterierbares Objekt zurück, sodass wir das Ergebnis der Abfrage immer durchlaufen können, auch wenn die Abfrage nur einen oder keinen Eintrag findet. Unten sehen Sie das Ergebnis der Datenzuordnung, die auf dieselbe Weise wie im Beispiel im vorherigen Modul durchgeführt wird.
Aus dem Ergebnis können wir ersehen, dass Susan Example nicht Teil des zugeordneten JArray ist, da sie 40 Jahre alt ist. LINQ hat sie aufgrund der Regel, die wir in der Abfrage definiert haben, aus dem ursprünglichen JArray herausgefiltert.
Der nächste ArtikelEinführung in die Verwendung von Namespaces in Codeelementen
Verwandte ArtikelSo verwenden Sie LINQ in Frends zur Datenextraktion und -manipulationEinführung in JSON-ObjekteEinführung in das Mapping von JSON-Daten mithilfe von ObjektenBeispiel zur Verwendung von LINQ in Code und LINQ-RessourcenEinführung in das Erstellen einer JSON-Nachricht – ein nicht ganz einfaches Beispiel