Visualisierung von LINQ-Abfragen in C#

C# LINQ-Abfragen: Eine Einführung

LINQ (Language Integrated Query) ist eine integrierte Abfragesprache in C#. Sie ermöglicht es, Abfragen auf Datenquellen wie Listen, Arrays, Datenbanken oder XML-Dokumenten auszuführen. Mit LINQ können komplexe Abfragen einfach und effizient geschrieben werden, ohne dass umfangreiche Schleifen und bedingte Anweisungen notwendig sind. In diesem Artikel werden wir uns mit den Grundlagen von LINQ-Abfragen in C# beschäftigen.

  1. Einführung in LINQ-Abfragen: LINQ-Abfragen ermöglichen es, Datenquellen wie Listen, Arrays, Datenbanken oder XML-Dokumente zu durchsuchen und die Ergebnisse zu filtern oder zu transformieren. Die Syntax von LINQ-Abfragen ähnelt SQL-Abfragen, was das Schreiben von Abfragen sehr einfach macht.

  2. Erstellen von LINQ-Abfragen: Um eine LINQ-Abfrage zu erstellen, muss eine Datenquelle definiert werden. Dies kann eine Liste, ein Array, eine Datenbank oder ein XML-Dokument sein. Danach wird eine Abfrage erstellt, indem eine oder mehrere Operationen wie Where, Select, OrderBy, GroupBy usw. auf die Datenquelle angewendet werden.

  3. Ausführen von LINQ-Abfragen: LINQ-Abfragen können auf zwei Arten ausgeführt werden: als IEnumerable<T> oder als IQueryable<T>. Die IEnumerable<T> Abfrage wird ausgeführt, wenn die Ergebnisse in einer Liste oder einem Array gespeichert werden. Die IQueryable<T> Abfrage wird ausgeführt, wenn die Ergebnisse direkt aus der Datenquelle gelesen werden sollen, z.B. aus einer Datenbank.

  4. Beispiel für eine LINQ-Abfrage: Hier ist ein Beispiel für eine LINQ-Abfrage, die die Namen aller Studenten aus einer Liste von Studenten zurückgibt, die älter als 18 Jahre sind und einen Notendurchschnitt von mindestens 2,5 haben:

    List<Student> studentList = new List<Student>(); var query = from student in studentList where student.Age > 18 && student.GradePointAverage >= 2.5 select student.Name;

  5. Vorteile von LINQ-Abfragen: Die Verwendung von LINQ-Abfragen bietet viele Vorteile. Eine der größten Vorteile ist, dass sie den Code lesbarer und einfacher zu warten machen. Darüber hinaus reduzieren LINQ-Abfragen die Anzahl der Schleifen und bedingten Anweisungen, die benötigt werden, um komplexe Abfragen durchzuführen. Außerdem ist es einfach, Abfragen zu optimieren, da LINQ-Abfragen in der Regel effizienter als herkömmliche Schleifen und bedingte Anweisungen sind.

Hier sind einige Beispiele für C# LINQ-Abfragen:

  • Abfrage nach spezifischen Elementen einer Liste
				
					List<string> namen = new List<string>() { "Max", "Lisa", "Peter", "Anna", "Tom" };
var ergebnis = from n in namen
               where n.StartsWith("L") || n.StartsWith("T")
               select n;

foreach (var name in ergebnis)
{
    Console.WriteLine(name);
}

				
			

Diese Abfrage gibt alle Namen aus der Liste namen zurück, die mit „L“ oder „T“ beginnen.

  • Abfrage nach dem Durchschnittswert in einer Liste
				
					List<int> zahlen = new List<int>() { 3, 7, 10, 22, 34 };
var durchschnitt = (from z in zahlen
                    select z).Average();

Console.WriteLine("Der Durchschnitt der Zahlen ist: " + durchschnitt);

				
			

Diese Abfrage gibt den Durchschnitt aller Zahlen in der Liste zahlen zurück.

  • Abfrage mit Join-Operation
				
					List<string> namen = new List<string>() { "Max", "Lisa", "Peter", "Anna", "Tom" };
List<int> alter = new List<int>() { 25, 30, 40, 35, 28 };

var ergebnis = from n in namen
               join a in alter on namen.IndexOf(n) equals alter.IndexOf(a)
               select new { Name = n, Alter = a };

foreach (var item in ergebnis)
{
    Console.WriteLine(item.Name + " ist " + item.Alter + " Jahre alt.");
}

				
			

Diese Abfrage verknüpft die Listen namen und alter mithilfe der Join-Methode und gibt eine Liste mit Namen und Alter zurück, wobei jedes Element eine anonyme Typ ist.

  • Abfrage mit Gruppierung
				
					List<string> namen = new List<string>() { "Max", "Lisa", "Peter", "Anna", "Tom" };
var ergebnis = from n in namen
               group n by n.Length into g
               select new { Length = g.Key, Names = g };

foreach (var item in ergebnis)
{
    Console.WriteLine("Namen mit der Länge " + item.Length + ":");
    foreach (var name in item.Names)
    {
        Console.WriteLine(name);
    }
}

				
			

Diese Abfrage gruppiert die Namen aus der Liste namen nach Länge und gibt für jede Länge die entsprechenden Namen aus.

LINQ-Abfragen sind eine effektive und einfache Methode, um komplexe Abfragen auf Datenquellen wie Listen, Arrays, Datenbanken oder XML-Dokumenten auszuführen. Sie bieten viele Vorteile, darunter bessere Lesbarkeit des Codes, einfachere Wartung und höhere Effizienz. Wenn Sie mit C# arbeiten, sollten Sie unbedingt die Verwendung von LINQ in Betracht ziehen, da sie Ihre Arbeit erleichtern und Ihre Entwicklungszeit verkürzen kann. Wenn Sie sich für LINQ interessieren, empfiehlt es sich, mit einfachen Beispielen zu beginnen und schrittweise fortzuschreiten, um das volle Potenzial dieser leistungsstarken Abfrage-Sprache zu nutzen. Mit etwas Übung können Sie mühelos komplexe Datenabfragen durchführen und Ihre Entwicklungsprozesse optimieren.

Aufgabe:

Aufgabe zum Mitmachen:

Erstelle eine LINQ-Abfrage, die alle geraden Zahlen von einer Liste von Zahlen zurückgibt.

Um die Lösung anzuzeigen, fahre mit der Maus in die Mitte des darunterliegenden Fensters.

				
					List<int> zahlen = new List<int>() { 2, 5, 8, 11, 14, 17 };
var ergebnis = from z in zahlen
where z % 2 == 0
select z;

foreach (var zahl in ergebnis)
{
    Console.WriteLine(zahl);
}
				
			

Diese Abfrage gibt alle geraden Zahlen aus der Liste zahlen zurück, indem sie die Modulo-Operation verwendet, um zu überprüfen, ob eine Zahl gerade ist.

Zurück zum vorherigen Teil des C# Kurses
Klicken Sie auf den Pfeil, um zum vorherigen Teil des Kurses zurückzukehren
Pfeil-Button zum nächsten Teil des Kurses
Klicken Sie auf den Pfeil, um zum nächsten Teil des Kurses zu gelangen