C# Linq ist ein tolles Werkzeug, um Daten aus einem Array oder einer Liste abzufragen. Man kann einfach nach bestimmten Werten suchen oder auch komplexere Operationen durchführen.
Zum Beispiel kann man mit Linq nach allen Personen suchen, die älter als 18 sind:
var result = from person in persons
where person.age > 18
select person;
Oder man kann nach allen Personen suchen, die in Berlin wohnen:
var result = from person in persons
where person.city == "Berlin"
select person;
Linq ist sehr mächtig und kann in vielen Situationen sehr nützlich sein. Wenn man einmal damit angefangen hat, wird man es immer wieder verwenden wollen!
Die LINQ-Syntax im obigen Beispiel ist sehr einfach. Man beginnt mit dem Schlüsselwort “from”, gefolgt von einer Variable, in der die Daten gespeichert sind. Dann kommt das Schlüsselwort “where”, gefolgt von einem Suchkriterium. Zum Schluss kommt das Schlüsselwort “select”, gefolgt von der Variable, in der die Ergebnisse gespeichert werden sollen.
C# LINQ – Zwei Arten von Syntax
Es gibt zwei Arten von LINQ-Syntax: die Query-Syntax und die Methoden-Syntax.
Die Query-Syntax (wie im obigen Beispiel) sieht folgendermaßen aus:
var result = from person in persons
where person.age > 18
select person;
Die Methoden-Syntax sieht im Vergleich dazu folgendermaßen aus:
var result = persons.Where(person => person.age > 18);
Beide Syntaxen sind gültig und erfüllen den gleichen Zweck. Die Query-Syntax ist etwas einfacher zu lesen und verstehen, während die Methoden-Syntax etwas kürzer ist. Es ist eine Frage des Geschmacks, welche man verwendet.
Beispiele für C# LINQ
Hier sind einige LINQ-Beispiele in der Query-Syntax:
var result = from person in persons
where person.age > 18
select person;
var result = from person in persons
where person.city == "Berlin"
select person;
var result = from person in persons
where person.age > 18 && person.city == "Berlin"
select person;
var result = from person in persons
orderby person.age
select person;
var result = from person in persons
orderby person.age descending
select person;
var result = from person in persons
orderby person.age, person.name
select person;
Hier sind einige LINQ-Beispiele in der Methoden-Syntax:
var result = persons.Where(person => person.age > 18);
var result = persons.Where(person => person.city == "Berlin");
var result = persons.Where(person => person.age > 18 && person.city == "Berlin");
var result = persons.OrderBy(person => person.age);
var result = persons.OrderByDescending(person => person.age);
var result = persons.OrderBy(person => person.age).ThenBy(person => person.name);
Linq Methoden
Es gibt viele Methoden die du in C# Linq verwenden kannst um Elemente zu selektieren, gruppieren und sortieren:
- First()
- FirstOrDefault()
- Last()
- LastOrDefault()
- Single()
- SingleOrDefault()
- Skip()
- Take()
- Join()
- GroupJoin()
- OrderBy()
- OrderByDescending()
- ThenBy()
- ThenByDescending()
- GroupBy()
- Distinct()
- Union()
- Intersect()
- Except()
- Zip()
- Concat()
- DefaultIfEmpty()
- Reverse()
In diesem Beispiel hier verwenden wir einen längeren Query mit mehreren Keywords um detaillierter zu filtern und selektieren:
var result = from c in customers
where c.City == "London"
orderby c.Name
select new { c.Name, c.Phone };
Hier wurden also gleich mehrere keywords/statements verwendet um die Abfrage (Query) noch detaillierter zu gestalten.
Falls du noch mehr über C# Linq erfahren möchtest, dann schau mal hier.