C# LINQ Lambda výrazy

C Linq Lambda Vyrazy



Lambda výraz v C# přímo přebírá výrazy/podmíněné příkazy jako své tělo bez názvu. Musíme specifikovat parametry a pak se k tomu přiřadí výrazy. Při práci s Language Integrated Query (LINQ) můžete mít požadavek, že budete muset transformovat data, která jsou přítomna ve zdroji dat, nebo převést jeden zdroj dat na jiný zdroj dat. V této příručce uvidíme, jak filtrovat záznamy ze zdroje dat zadáním výrazu lambda a výběrem záznamů ze zdroje dat.

Syntax:

  1. Lambda výraz: (parametry) => výraz
  2. Lambda prohlášení: { podmíněný příkaz1 příkaz2 … }

Příklad 1:

Vytvořte seznam „hnojiv“, který obsahuje pět řetězců. Použijte výraz lambda, který vrátí všechny řetězce ze seznamu.

použitím Systém ;
použitím System.Linq ;
použitím System.Collections.Generic ;

třída Příklad výrazu lambda {

statický veřejnost prázdnota Hlavní ( )
{

// Vytvořit seznam hnojiv
Vyjmenujte hnojiva = Nový Seznam ( ) ;
hnojiva . Přidat ( 'Močovina' ) ;
hnojiva . Přidat ( 'dusík' ) ;
hnojiva . Přidat ( 'draslík' ) ;
hnojiva . Přidat ( 'Di-amoniumfosfát' ) ;
hnojiva . Přidat ( 'fosfor' ) ;

// Použijte LambdaExpression k výběru všech hnojiv
byl výsledek = hnojiva . Vybrat ( inp1 => inp1 ) ;
pro každého ( byl i v výsledek )
{
Řídicí panel . WriteLine ( i ) ;
}

}
}

Výstup:









Vysvětlení:



1. Vytvořte seznam typů řetězců s názvem „hnojiva“. Přidejte do tohoto seznamu pět řetězců.

2. Pomocí výrazu lambda vyberte všechna hnojiva. Zde se výraz používá s operátorem „Select“. Výraz je inp1 => inp1. Poté použijeme smyčku „foreach“ k zobrazení řetězců, které vrací výraz lambda.





Příklad 2:

Pomocí výrazu lambda vyberte hnojiva, která obsahují „fosfát“.

použitím Systém ;
použitím System.Linq ;
použitím System.Collections.Generic ;

třída Příklad výrazu lambda {

statický veřejnost prázdnota Hlavní ( )
{

// Vytvořit seznam hnojiv
Vyjmenujte hnojiva = Nový Seznam ( ) ;
hnojiva . Přidat ( 'Močovina' ) ;
hnojiva . Přidat ( 'dusík' ) ;
hnojiva . Přidat ( 'orto-fosfát' ) ;
hnojiva . Přidat ( 'Di-amoniumfosfát' ) ;
hnojiva . Přidat ( 'fosfor' ) ;

// Pomocí LambdaExpression vyberte  hnojiva, která zahrnují - 'Phosphate'
byl výsledek = hnojiva . Kde ( inp1 => inp1 . Obsahuje ( 'Fosfát' ) ) ;
pro každého ( byl i v výsledek )
{
Řídicí panel . WriteLine ( i ) ;
}

}
}

Výstup:



Existují dva řetězce, které obsahují „Phosphate“.

Vysvětlení:

1. Vytvořte seznam typů řetězců s názvem „hnojiva“. Přidejte do tohoto seznamu pět řetězců.

2. Zde se výraz používá s operátorem „Kde“. Výraz je inp1 => inp1.Contains(“Phosphate”). Poté použijeme smyčku „foreach“ k zobrazení řetězců, které vrací výraz lambda.

Příklad 3:

Mějme seznam (množství_objednávek), který obsahuje tři objednávky. Zadejte výraz lambda pro přidání 5 ke každé objednávce.

použitím Systém ;
použitím System.Linq ;
použitím System.Collections.Generic ;

třída Příklad výrazu lambda {

statický veřejnost prázdnota Hlavní ( )
{

// Vytvořit seznam množství
Vypsat objednané_množství = Nový Seznam ( ) ;
objednané_množství . Přidat ( 5 ) ;
objednané_množství . Přidat ( 7 ) ;
objednané_množství . Přidat ( 8 ) ;

// Použijte LambdaExpression na 5 pro každou objednávku.
byl výsledek = objednané_množství . Vybrat ( inp1 => inp1 + 5 ) ;
pro každého ( byl i v výsledek )
{
Řídicí panel . WriteLine ( i ) ;
}

}
}

Výstup:

Seznam [5,7,8] se transformuje na [10,12,13].

Vysvětlení:

1. Vytvořte seznam veličin typu Integer.

2. Nejprve vybereme objednávky a poté přidáme 5 ke každé objednávce. Použije se tedy operátor „Select“. Výraz je inp1 => inp1 + 5.

Příklad 4:

Vytvořte zdroj dat seznamu typu Event (se třemi atributy – Event_Name, Event_Status a Event_Budget) a vraťte záznamy s Event_Budget, který je větší než 5000.

použitím Systém ;
použitím System.Linq ;
použitím System.Collections.Generic ;

// Vytvořte třídu s názvem - 'Event_Source' s 5 událostmi.
veřejnost třída Event_Source
{
veřejnost statický prázdnota Hlavní ( )
{
// Seznam událostí
IList události = Nový Seznam ( ) {
Nový událost ( ) { Název události = 'Technický tábor' ,Stav_události = 'Plánované' ,Událost_Rozpočet = 10 000 } ,
Nový událost ( ) { Název události = 'Marketingový kemp' ,Stav_události = 'Dokončeno' ,Událost_Rozpočet = 5000 } ,
Nový událost ( ) { Název události = 'Jiný' ,Stav_události = 'Plánované' ,Událost_Rozpočet = 1000 } ,
Nový událost ( ) { Název události = 'Politika' ,Stav_události = 'Plánované' ,Událost_Rozpočet = 13 000 } ,
Nový událost ( ) { Název události = 'Finance' ,Stav_události = 'Dokončeno' ,Událost_Rozpočet = 20 000 } ,
} ;

//Event_Budget větší než 5000.
byl výsledek = Události . Kde ( inp1 => inp1 . Event_Budget > 5000 ) ;
pro každého ( byl i v výsledek ) {
Řídicí panel . WriteLine ( 'NÁZEV: ' + i . Název události + 'STAV:' + i . Event_Status + 'ROZPOČET:' + i . Event_Budget ) ;
}
}
}

veřejnost třída událost {
veřejnost tětiva Název události { dostat ; soubor ; }
veřejnost tětiva Event_Status { dostat ; soubor ; }
veřejnost int Event_Budget { dostat ; soubor ; }
}

Výstup:

V seznamu „událostí“ jsou tři záznamy s Event_Budget větším než 5000.

Vysvětlení:

1. Nejprve vytvoříme třídu „Event“ se třemi atributy.

2. Poté vytvoříme seznam pěti událostí.

3. Pomocí inp1 => inp1.Event_Budget > 5000 lambda, vybereme záznamy s Event_Budget větším než 5000.

Příklad 5:

Využijte předchozí kód a změňte výraz lambda. Vraťte události s názvem Event_Name, který končí na „Camp“ a se stavem Event_Status, který je „Planned“.

//Lambda Expression - Event_Name končí na 'Camp' a Event_Status je 'Planned'.
byl výsledek = Události . Kde ( inp1 => inp1 . Název události . Končí s ( 'Tábor' ) && inp1 . Event_Status == 'Plánované' ) ;
pro každého ( byl i v výsledek ) {
Řídicí panel . WriteLine ( 'NÁZEV: ' + i . Název události + 'STAV:' + i . Event_Status + 'ROZPOČET:' + i . Event_Budget ) ;
}

Výstup:

Existuje pouze jeden záznam, který splňuje obě podmínky.

Vysvětlení:

Zde specifikujeme dvě podmínky ve výrazu lambda. Operátor && (and) se používá k tomu, aby byly dvě podmínky pravdivé. První podmínka používá metodu EndsWith() ke kontrole, zda řetězec končí daným řetězcem. Druhá podmínka používá operátor „Porovnání“ (==) ke kontrole, zda jsou obě hodnoty stejné nebo ne.

Závěr

V C# výraz lambda přebírá výrazy/podmíněné příkazy jako své tělo bez názvu. Musíme specifikovat parametry. Poté jsou k němu přiřazeny výrazy. V zásadě se používají k filtrování záznamů z daného zdroje dat, transformaci prvků a výběru prvků ze zdroje/sekvence dat. V této příručce jsme diskutovali o pěti různých příkladech, které vybírají, filtrují a transformují prvky pomocí výrazu lambda.