Abfragesyntax:
Schauen wir uns die generische Syntax an:
aus Iterator In Datenquellewählen Iterator ;
Hier:
- Die Data_Source kann die Liste sein, die die Daten enthält.
- Der Iterator wird verwendet, um die Elemente aus der Data_Source abzurufen.
Datenquelle
In diesem gesamten Leitfaden verwenden wir die folgende Liste von Datensätzen als Datenquelle und alle Abfragen werden nur auf diese Datenquelle angewendet. Stellen Sie sicher, dass Sie diesen Code in Ihrer Umgebung ausführen und die Abfrageanweisungen nacheinander anhand der folgenden Beispiele ändern, die wir besprechen werden:
verwenden System ;
verwenden System.Collections.Generic ;
verwenden System.Linq ;
verwenden System.Collections ;
öffentlich Klasse Berechnungen
{
öffentlich statisch Leere Hauptsächlich ( )
{
// Listenerstellung
Länderpreise auflisten = neu Aufführen ( ) {
// 5 Datensätze zur Liste hinzufügen
neu Preise ( ) { Artikel = „Früchte“ ,Standort = 'USA' , Menge = 100 , kosten = 345,78 } ,
neu Preise ( ) { Artikel = „Nüsse“ ,Standort = 'Indien' , Menge = 200 , kosten = 3645,78 } ,
neu Preise ( ) { Artikel = 'Andere' ,Standort = 'VEREINIGTES KÖNIGREICH' , Menge = 500 , kosten = 90,68 } ,
neu Preise ( ) { Artikel = 'Öl' ,Standort = 'USA' , Menge = 100 , kosten = 345,78 } ,
neu Preise ( ) { Artikel = 'Peperoni' ,Standort = 'USA' , Menge = 10 , kosten = 67,89 } ,
} ;
für jede ( War ich In Länderpreise )
{
Konsole . WriteLine ( ich . Artikel + ' ' + ich . Standort + ' ' + ich . Menge + ' ' + ich . kosten ) ;
}
}
}
öffentlich Klasse Preise {
öffentlich Zeichenfolge Artikel { erhalten ; Satz ; }
öffentlich Zeichenfolge Standort { erhalten ; Satz ; }
öffentlich int Menge { erhalten ; Satz ; }
öffentlich doppelt kosten { erhalten ; Satz ; }
}
Aufzeichnungen:
Erläuterung:
1. Erstellen Sie die Preise mit den folgenden Attributen:
2. Erstellen Sie eine weitere Klasse „Berechnungen“ mit der Hauptmethode und erstellen Sie die Liste „country_prices“ mit fünf Datensätzen.
Wählen
Grundsätzlich ist „select“ ein Projektionsoperator, der die Attribute aus der angegebenen Datenquelle auswählt. Die Abfrage beginnt mit „von“. Anschließend geben wir den Iterator an, der die Datenquelle durchläuft. Anschließend wird der „select“-Operator angegeben.
Syntax:
Alle Attribute: Vom Iterator in Data_Source wählen Sie den Iterator aus;
Spezifisches Attribut: Wählen Sie vom Iterator in Data_Source iterator.attribute aus.
Beispiel 1:
Schreiben wir eine Abfrage, um alle Datensätze aus der Liste auszuwählen.
verwenden System ;verwenden System.Collections.Generic ;
verwenden System.Linq ;
verwenden System.Collections ;
öffentlich Klasse Berechnungen
{
öffentlich statisch Leere Hauptsächlich ( )
{
// Listenerstellung
Länderpreise auflisten = neu Aufführen ( ) {
// 5 Datensätze zur Liste hinzufügen
neu Preise ( ) { Artikel = „Früchte“ ,Standort = 'USA' , Menge = 100 , kosten = 345,78 } ,
neu Preise ( ) { Artikel = „Nüsse“ ,Standort = 'Indien' , Menge = 200 , kosten = 3645,78 } ,
neu Preise ( ) { Artikel = 'Andere' ,Standort = 'VEREINIGTES KÖNIGREICH' , Menge = 500 , kosten = 90,68 } ,
neu Preise ( ) { Artikel = 'Öl' ,Standort = 'USA' , Menge = 100 , kosten = 345,78 } ,
neu Preise ( ) { Artikel = 'Peperoni' ,Standort = 'USA' , Menge = 10 , kosten = 67,89 } ,
} ;
//Operator in der Abfrage auswählen
War Daten = aus ich In Länderpreise
wählen ich ;
für jede ( War ich In Daten )
{
Konsole . WriteLine ( ich . Artikel + ' ' + ich . Standort + ' ' + ich . Menge + ' ' + ich . kosten ) ;
}
}
}
öffentlich Klasse Preise {
öffentlich Zeichenfolge Artikel { erhalten ; Satz ; }
öffentlich Zeichenfolge Standort { erhalten ; Satz ; }
öffentlich int Menge { erhalten ; Satz ; }
öffentlich doppelt kosten { erhalten ; Satz ; }
}
Ausgang:
Hier haben wir in der „select“-Abfrage kein Attribut angegeben. Wir haben alle Attribute aus der Abfrage (Daten) innerhalb der „foreach“-Schleife mithilfe des Iterators abgerufen.
Beispiel 2:
Rufen Sie nun die Elemente ab, indem Sie das Elementattribut im „select“-Operator angeben. Die Abfrage lautet: „ von i in country_prices wählen Sie i.item aus “.
//Operator auswählen, um das Elementattribut in der Abfrage abzurufenWar Daten = aus ich In Länderpreise
wählen ich . Artikel ;
für jede ( War ich In Daten )
{
Konsole . WriteLine ( ich ) ;
}
Ausgang:
Zeile Nr. 21 – Zeile Nr. 29:
2. Wo
Wenn Sie die Daten basierend auf bestimmten Bedingungen filtern möchten, können Sie in der Abfrage den „where“-Operator zusammen mit der „select“-Klausel verwenden. Aber zuerst wird der „Where“-Operator verwendet und dann wird der Auswahloperator angegeben.
Syntax:
Sehen wir uns an, wie man den „where“-Operator in der LINQ-Abfrage verwendet.
aus Iterator In DatenquelleWo Zustand / S
wählen Iterator . Attribut ;
Beispiel 1: Einzelbedingung
Lassen Sie uns die Datensätze basierend auf dem Artikelattribut filtern. Verwenden Sie den Gleichheitsoperator (==) im „where“-Operator als Bedingung und vergleichen Sie den Iterator mit „Chillies“. Daher werden die Datensätze ausgewählt, die sich auf „Chilis“ beziehen.
Die Abfrage lautet „ von i in Country_prices
wobei i.item == „Chilis“
wähle „i“
War Daten = aus ich In Länderpreise
Wo ich . Artikel == 'Peperoni'
wählen ich ;
für jede ( War ich In Daten )
{
Konsole . WriteLine ( ich . Artikel + ' ' + ich . Standort + ' ' + ich . Menge + ' ' + ich . kosten ) ;
}
Ausgang:
Es gibt nur einen Datensatz mit dem Eintrag „Chilis“.
Zeile Nr. 21 – Zeile Nr. 30:
Beispiel 2: Mehrere Bedingungen
Lassen Sie uns die Datensätze anhand der Standort- und Mengenattribute filtern. Die Menge sollte größer als 50 und kleiner als 300 sein. Der Standort sollte „USA“ sein.
Die Abfrage lautet „ von i in Country_prices
wobei i.quantity > 50 ist
wobei i.quantity < 300 ist
wobei i.location == „USA“
wähle „i“
War Daten = aus ich In Länderpreise
Wo ich . Menge > fünfzig
Wo ich . Menge < 300
Wo ich . Standort == 'USA'
wählen ich ;
für jede ( War ich In Daten )
{
Konsole . WriteLine ( ich . Artikel + ' ' + ich . Standort + ' ' + ich . Menge + ' ' + ich . kosten ) ;
}
Ausgang:
Es gibt zwei Datensätze, die den vorherigen Bedingungen entsprechen.
Zeile Nr. 21 – Zeile Nr. 32:
Beispiel 3: Und (&&) Operator
Wir können den Operator „und (&&)“ angeben, um mehrere Bedingungen gleichzeitig anzugeben. Wenn alle Bedingungen erfüllt sind, werden von der Abfrage die Datensätze zurückgegeben, die alle Bedingungen erfüllen.
In diesem Beispiel wählen wir die Datensätze aus, wenn die Menge größer als 20 ist und die Kosten 67,89 betragen.
Die Abfrage lautet „ von i in Country_prices
wobei i.quantity < 20 && i.cost == 67,89
wähle „i“
Wo ich . Menge < zwanzig && ich . kosten == 67,89
wählen ich ;
für jede ( War ich In Daten )
{
Konsole . WriteLine ( ich . Artikel + ' ' + ich . Standort + ' ' + ich . Menge + ' ' + ich . kosten ) ;
}
Ausgang:
Es gibt nur einen Datensatz mit einer Menge von weniger als 20 und einem Preis von 67,89
Zeile Nr. 21 – Zeile Nr. 29:
Beispiel 4: Oder (||) Operator
Der Operator „oder (||)“ wird auch verwendet, um mehrere Bedingungen gleichzeitig anzugeben. Wenn mindestens eine Bedingung wahr ist, werden die Datensätze zurückgegeben, die diese Bedingung erfüllen.
In diesem Beispiel wählen wir die Datensätze aus, wenn die Menge größer als 300 ist oder der Standort „Tokio“ ist.
Die Abfrage lautet „ von i in Country_prices
wobei i.quantity > 300 || i.location == „Tokio“
wähle „i“
Wo ich . Menge > 300 || ich . Standort == 'Tokio'
wählen ich ;
für jede ( War ich In Daten )
{
Konsole . WriteLine ( ich . Artikel + ' ' + ich . Standort + ' ' + ich . Menge + ' ' + ich . kosten ) ;
}
Ausgang:
Es gibt nur einen Datensatz mit einer Menge größer als 300 (die erste Bedingung ist erfüllt).
Zeile Nr. 21 – Zeile Nr. 29:
3. Bestellen nach
Wenn Sie die von der LINQ-Abfrage zurückgegebenen Datensätze basierend auf Werten in einem der Attribute in aufsteigender oder absteigender Reihenfolge anordnen möchten, können Sie in der Abfrage den Operator „Sortieren nach“ verwenden. Sie müssen diesen Operator vor dem „select“-Operator angeben.
Syntax:
Sehen wir uns an, wie der Operator „order by“ in der LINQ-Abfrage verwendet wird.
Aufsteigende Reihenfolge:
aus Iterator In DatenquelleBefehl von Iterator . Attribut aufsteigend
wählen Iterator ;
Absteigende Reihenfolge:
aus Iterator In DatenquelleBefehl von Iterator . Attribut absteigend
wählen Iterator ;
Beispiel 1: Aufsteigende Reihenfolge
Wählen Sie alle Attribute aus der Datenquelle (Liste) aus und geben Sie sie in aufsteigender Reihenfolge basierend auf den Werten im Mengenattribut zurück.
Die Abfrage lautet „ von i in Country_prices
orderby i.quantity aufsteigend
wähle „i“
Bestellung nach i . Menge aufsteigend
wählen ich ;
für jede ( War ich In Daten )
{
Konsole . WriteLine ( ich . Artikel + ' ' + ich . Standort + ' ' + ich . Menge + ' ' + ich . kosten ) ;
}
Ausgang:
Zeile Nr. 21 – Zeile Nr. 29:
Beispiel 2: Absteigende Reihenfolge
Wählen Sie alle Attribute aus der Datenquelle (Liste) aus und geben Sie sie in absteigender Reihenfolge basierend auf den Werten im Kostenattribut zurück.
Die Abfrage lautet „ von i in Country_prices
Bestellung nach i.Kosten absteigend
wähle „i“
Bestellung nach i . kosten absteigend
wählen ich ;
für jede ( War ich In Daten )
{
Konsole . WriteLine ( ich . Artikel + ' ' + ich . Standort + ' ' + ich . Menge + ' ' + ich . kosten ) ;
}
Ausgang:
Zeile Nr. 21 – Zeile Nr. 29:
4. Begrenzen
Limit in SQL begrenzt die Datensätze, die von der Abfrage zurückgegeben werden. Es gibt die obersten Datensätze zurück, die von der Abfrage zurückgegeben werden. In LINQ können wir dies erreichen, indem wir Skip() mit dem Take()-Operator verwenden. Take() ruft die angegebene Anzahl von Datensätzen ab. Skip() wird verwendet, um die Startdatensatznummer anzugeben. Auf diese Weise können wir die „Limit“-Funktionalität in LINQ erreichen.
Syntax:
( aus Iterator In Datenquellewählen Iterator ) . Überspringen ( N ) . Nehmen ( N ) ;
- Skip() wird verwendet, um die Datensätze zu überspringen und die verbleibenden Datensätze zurückzugeben. Es wird eine Ganzzahl benötigt, die die Anzahl der zu überspringenden Elemente angibt. In unserem Fall ist es 0.
- Take() wird verwendet, um „n“ Datensätze vom ersten Datensatz zu übernehmen.
Beispiel:
Wählen Sie die ersten drei Datensätze aus fünf Datensätzen aus, die von der Abfrage zurückgegeben werden.
Die Abfrage lautet „ (von i in Country_prices
wähle i).Skip(0).Take(3)“
wählen ich ) . Überspringen ( 0 ) . Nehmen ( 3 ) ;
für jede ( War ich In Daten )
{
Konsole . WriteLine ( ich . Artikel + ' ' + ich . Standort + ' ' + ich . Menge + ' ' + ich . kosten ) ;
}
}
Ausgang:
Zeile Nr. 21 – Zeile Nr. 28:
Abschluss
Wir haben gelernt, wie man die Abfragen in C# LINQ schreibt, das SQL ähnelt. Im Rahmen dieses Tutorials haben wir besprochen, wie Sie mit dem „select“-Operator die Datensätze aus der Datenquelle auswählen. Um die von der Abfrage zurückgegebenen Datensätze zu filtern, haben wir den „where“-Operator verwendet, indem wir die Bedingungen angegeben haben. Anschließend haben wir gelernt, wie man die von der Abfrage zurückgegebenen Datensätze mit dem Operator „Sortieren nach“ sortiert. Um schließlich die Datensätze einzuschränken, haben wir die Operatoren Skip() und Take() verwendet.