Sie sind auf Seite 1von 25

sew htl krems

Lambda Expressions
Dipl.-Ing. Msc. Paul Panhofer Bsc.

1. Dezember 2020
./img/logo.jpeg
sew htl krems

1 Lambda Ausdrücke
Delegates
Lambda Ausdrücke

2 Linq - Methodensyntax
Querymethoden
Aggregatmethoden

Dipl.-Ing. Msc. Paul Panhofer Bsc. — SEW — 1. Dezember 2020


2/25 ./img/logo.jpeg
sew htl krems

Delegates
Arten von Datentyp

Ein Datentyp definiert welche Werte eine Variable an-


nehmen kann.

Dipl.-Ing. Msc. Paul Panhofer Bsc. — SEW — 1. Dezember 2020


3/25 ./img/logo.jpeg
sew htl krems

Delegates
Arten von Datentyp

• Einfache Datentypen
• Komplexe Datentypen
• Basisklassen
• Interfaces

Dipl.-Ing. Msc. Paul Panhofer Bsc. — SEW — 1. Dezember 2020


4/25 ./img/logo.jpeg
sew htl krems

Delegates
Delegate

Delegates sind Datentypen zur Verwaltung von Metho-


den. Ein Delegate beschreibt die Signatur einer Metho-
de.

// Typdefinition: delegate
public delegate string Executable(int x);

// Methode mit der gleichen Methodensignatur


public string Execute(int x){...}

Dipl.-Ing. Msc. Paul Panhofer Bsc. — SEW — 1. Dezember 2020


5/25 ./img/logo.jpeg
sew htl krems

Delegates
Variablendefinition: Methode

public delegate string Executable(int x);

public string Execute(int x){...}

public static void Main(String[] args){


Executable executable = new Executeable(Execute);
...

String param = executable(5);

Dipl.-Ing. Msc. Paul Panhofer Bsc. — SEW — 1. Dezember 2020


6/25 ./img/logo.jpeg
sew htl krems

Delegates
Variablendefinition: Anonyme Methode

public delegate string Executable(int x);

public static void Main(String[] args){


...
// Zuweisung einer anonymen Methode
Executable executable = delegate (int x) {
return Session.Get(x);
};
...

String param = executable(5);

Dipl.-Ing. Msc. Paul Panhofer Bsc. — SEW — 1. Dezember 2020


7/25 ./img/logo.jpeg
sew htl krems

Delegates
Variablendefinition: Lambda

public delegate string Executable(int x);

public static void Main(String[] args){


...
// Zuweisung eines Lambda Ausdrucks
Executable executable = x => { return
Session.Get(x); };
...

String param = executable(5);

Dipl.-Ing. Msc. Paul Panhofer Bsc. — SEW — 1. Dezember 2020


8/25 ./img/logo.jpeg
sew htl krems

1 Lambda Ausdrücke
Delegates
Lambda Ausdrücke

2 Linq - Methodensyntax
Querymethoden
Aggregatmethoden

Dipl.-Ing. Msc. Paul Panhofer Bsc. — SEW — 1. Dezember 2020


9/25 ./img/logo.jpeg
sew htl krems

Lambda Ausdrücke

Lambda Ausdrücke ermöglichen es Methoden auf


einfache Weise zu beschreiben.

Dipl.-Ing. Msc. Paul Panhofer Bsc. — SEW — 1. Dezember 2020


10/25 ./img/logo.jpeg
sew htl krems

Lambda Ausdrücke

// 1.Beispiel
Methode: public void f(int x) { Console.WriteLine(x); }

Lambda: (x) => { Console.WriteLine(); }

// 2.Beispiel
Methode: public int f(int x, int y) { return x + y; }

Lambda: (x, y) => { return x + y; }

Dipl.-Ing. Msc. Paul Panhofer Bsc. — SEW — 1. Dezember 2020


11/25 ./img/logo.jpeg
sew htl krems

Lambda Ausdrücke
Parameterlisten

/* 1.) Datentypenangaben fuer Parameter sind optional */

(string s) => { return s.Length; }


(s) => { return s.Length; }

/* 2.) Gibt es keine Parameter besteht die Parameterliste


aus einem leeren Klammerpaar. */

() => { Console.WriteLine("Hallo Welt"); }

Dipl.-Ing. Msc. Paul Panhofer Bsc. — SEW — 1. Dezember 2020


12/25 ./img/logo.jpeg
sew htl krems

Lambda Ausdrücke
Parameterlisten

/* 3.) Bei einem einzelnen Parameter ist das Klammerpaar


optional. */

(s) => { return s.Length; }


s => { return s.Length; }

/* 4.) Parameter werden durch Beistriche von einander


getrennt. */

(x, y) => { return x > y; }

Dipl.-Ing. Msc. Paul Panhofer Bsc. — SEW — 1. Dezember 2020


13/25 ./img/logo.jpeg
sew htl krems

Lambda Expressions
Lambda Methodenkörper

/* 1.) Enthaelt der Methodenkoerper mehrere Befehle


werden sie durch Strichpunkte voneinander ge-
trennt */

s => { Console.WriteLine(s); Console.Out.Flush(); }

/* 2.) Enthaelt der Methodenkoerper nur eine einzelne


Anweisung ist das Klammerpaar optional. */

s => { Console.Wrror.WriteLine(s); }
s => Console.Error.WriteLine(s);

Dipl.-Ing. Msc. Paul Panhofer Bsc. — SEW — 1. Dezember 2020


14/25 ./img/logo.jpeg
sew htl krems

Lambda Ausdrücke
Lambda Methodenkörper

/* 3.) Enthaelt der Methodenkoerper eine einzelne return


Anweisung, kann das return Schluesselwort weg-
gelassen werden. */

s => return s.Length;


s => s.Length;

Dipl.-Ing. Msc. Paul Panhofer Bsc. — SEW — 1. Dezember 2020


15/25 ./img/logo.jpeg
sew htl krems

1 Lambda Ausdrücke
Delegates
Lambda Ausdrücke

2 Linq - Methodensyntax
Querymethoden
Aggregatmethoden

Dipl.-Ing. Msc. Paul Panhofer Bsc. — SEW — 1. Dezember 2020


16/25 ./img/logo.jpeg
sew htl krems

Linq - Querymethoden

Linq Abfragen können in Query oder Methodensyntax


formuliert werden.

Dipl.-Ing. Msc. Paul Panhofer Bsc. — SEW — 1. Dezember 2020


17/25 ./img/logo.jpeg
sew htl krems

Linq - Querymethoden
Query Methode: Where

/* Datentyp */
public delegate bool Func(T t);

/* Finden Sie alle Studenten die aelter sind als 20. */


var query = studentList.Where(
s => s.Age > 20
);

Dipl.-Ing. Msc. Paul Panhofer Bsc. — SEW — 1. Dezember 2020


18/25 ./img/logo.jpeg
sew htl krems

Linq - Querymethoden
Query Methode: Select

/* Datentyp */
public delegate S Func(T t);

/* Geben Sie die Namen der Studenten aus. */


var query = studentList.Select (
s => s.LastName + " " + s.FirstName
)

Dipl.-Ing. Msc. Paul Panhofer Bsc. — SEW — 1. Dezember 2020


19/25 ./img/logo.jpeg
sew htl krems

Linq - Querymethoden
Query Methode: Select

/* Datentyp */
public delegate S Func(T t);

/* Geben Sie den Namen und das Alter der Studenten aus. */
var query = studentList.Select (
s => new {
Name = s.LastName + " " + s.FirstName,
Age = s.Age
}
)

Dipl.-Ing. Msc. Paul Panhofer Bsc. — SEW — 1. Dezember 2020


20/25 ./img/logo.jpeg
sew htl krems

Linq - Querymethoden
Query Methode: OrderBy, ThenBy

/* Datentyp */
public delegate S Func(T t);

/* Sortieren Sie die Studentendaten zuerst nach dem


Nachnamen und dem Vornamen der Studenten */
var query = studentList.OrderBy( s => s.LastName )
ThenBy ( s => s.FirstName )

Dipl.-Ing. Msc. Paul Panhofer Bsc. — SEW — 1. Dezember 2020


21/25 ./img/logo.jpeg
sew htl krems

Linq - Querymethoden
Beispiel: studentList

IList<Student> studentList = new List<Student>() {


new Student() {
StudentID = 1, FirstName = "John",
LastName = "Wick", Age = 13
} ,
new Student() {
StudentID = 2, FirstName = "Moin",
LastName = "Franni" , Age = 21
}
};

Dipl.-Ing. Msc. Paul Panhofer Bsc. — SEW — 1. Dezember 2020


22/25 ./img/logo.jpeg
sew htl krems

1 Lambda Ausdrücke
Delegates
Lambda Ausdrücke

2 Linq - Methodensyntax
Querymethoden
Aggregatmethoden

Dipl.-Ing. Msc. Paul Panhofer Bsc. — SEW — 1. Dezember 2020


23/25 ./img/logo.jpeg
sew htl krems

Linq - Aggregatmethoden
Max, Min, Average, Sum

/* Geben Sie das hoechste Gehalt aus */


int maxSalary = studentList.Max (
s => s.Salary
);

/* Wie alt ist der juengste Student */


int minAge = studentList.Min (
s => s.Age
);

Dipl.-Ing. Msc. Paul Panhofer Bsc. — SEW — 1. Dezember 2020


24/25 ./img/logo.jpeg
sew htl krems

Linq - Querymethoden
Beispiel: studentList

IList<Student> studentList = new List<Student>() {


new Student() {
StudentID = 1, FirstName = "John",
LastName = "Wick", Age = 13,
Salary = 2000
} ,
new Student() {
StudentID = 2, FirstName = "Moin",
LastName = "Franni" , Age = 21,
Salary = 3400
}
};

Dipl.-Ing. Msc. Paul Panhofer Bsc. — SEW — 1. Dezember 2020


25/25 ./img/logo.jpeg