C# LINQ ламбда изрази

C Linq Lambda Izrazi



Ламбда изразът в C# директно приема изразите/условните оператори като свое тяло без име. Трябва да посочим параметрите и след това изразите му се присвояват. Докато работите с Language Integrated Query (LINQ), може да имате изискване да преобразувате данните, които присъстват в източника на данни, или да конвертирате един източник на данни в друг източник на данни. В това ръководство ще видим как да филтрирате записите от източника на данни, като посочите ламбда израза и изберете записите от източника на данни.

Синтаксис:

  1. Ламбда израз: (параметри) => израз
  2. Изявление Lambda: {условно изявление1 изявление2...}

Пример 1:

Създайте списък с „торове“, който съдържа пет низа. Използвайте ламбда израза, който връща всички низове от списъка.

използвайки Система ;
използвайки System.Linq ;
използвайки System.Collections.Generic ;

клас LambdaExpressionExample {

статичен публичен невалиден Основен ( )
{

// Създаване на списък с торове
Избройте торове = нов списък ( ) ;
торове . Добавете ( 'карбамид' ) ;
торове . Добавете ( 'азот' ) ;
торове . Добавете ( 'калий' ) ;
торове . Добавете ( 'Диамониев фосфат' ) ;
торове . Добавете ( 'фосфор' ) ;

// Използвайте LambdaExpression, за да изберете всички торове
беше резултат = торове . Изберете ( inp1 => inp1 ) ;
за всеки ( беше i в резултат )
{
Конзола . WriteLine ( i ) ;
}

}
}

Изход:









Обяснение:



1. Създайте списък от тип низ, наречен „торове“. Добавете пет низа към този списък.

2. Използвайте ламбда израза, за да изберете всички торове. Тук изразът се използва с оператора „Избор“. Изразът е inp1 => inp1. След това използваме цикъла „foreach“, за да покажем низовете, които се връщат от ламбда израза.





Пример 2:

Използвайте ламбда израза, за да изберете торовете, които включват „Фосфат“.

използвайки Система ;
използвайки System.Linq ;
използвайки System.Collections.Generic ;

клас LambdaExpressionExample {

статичен публичен невалиден Основен ( )
{

// Създаване на списък с торове
Избройте торове = нов списък ( ) ;
торове . Добавете ( 'карбамид' ) ;
торове . Добавете ( 'азот' ) ;
торове . Добавете ( 'орто - фосфат' ) ;
торове . Добавете ( 'Диамониев фосфат' ) ;
торове . Добавете ( 'фосфор' ) ;

// Използвайте LambdaExpression, за да изберете  торовете, които включват - 'Фосфат'
беше резултат = торове . Където ( inp1 => inp1 . Съдържа ( 'Фосфат' ) ) ;
за всеки ( беше i в резултат )
{
Конзола . WriteLine ( i ) ;
}

}
}

Изход:



Има два низа, които включват 'Фосфат' в тях.

Обяснение:

1. Създайте списък от тип низ, наречен „торове“. Добавете пет низа към този списък.

2. Тук изразът се използва с оператора „Къде“. Изразът е inp1 => inp1.Contains(“Фосфат”). След това използваме цикъла „foreach“, за да покажем низовете, които се връщат от ламбда израза.

Пример 3:

Нека имаме списък (order_quantity), който съдържа три поръчки. Посочете ламбда израза, за да добавите 5 към всяка поръчка.

използвайки Система ;
използвайки System.Linq ;
използвайки System.Collections.Generic ;

клас LambdaExpressionExample {

статичен публичен невалиден Основен ( )
{

// Създаване на списък с количества
Списък с количество_поръчка = нов списък ( ) ;
поръчано количество . Добавете ( 5 ) ;
поръчано количество . Добавете ( 7 ) ;
поръчано количество . Добавете ( 8 ) ;

// Използвайте LambdaExpression до 5 за всяка поръчка.
беше резултат = поръчано количество . Изберете ( inp1 => inp1 + 5 ) ;
за всеки ( беше i в резултат )
{
Конзола . WriteLine ( i ) ;
}

}
}

Изход:

Списъкът [5,7,8] се трансформира в [10,12,13].

Обяснение:

1. Създайте списък с количества от тип Integer.

2. Първо избираме поръчките и след това добавяме 5 към всяка поръчка. И така, използва се операторът „Избор“. Изразът е inp1 => inp1 + 5.

Пример 4:

Създайте списък с източник на данни от тип Event (с три атрибута – Event_Name, Event_Status и Event_Budget) и върнете записите с Event_Budget, който е по-голям от 5000.

използвайки Система ;
използвайки System.Linq ;
използвайки System.Collections.Generic ;

// Създайте клас с име - 'Event_Source' с 5 събития.
публичен клас Източник на събитие
{
публичен статичен невалиден Основен ( )
{
// Списък със събития
IList събития = нов списък ( ) {
нов Събитие ( ) { Име_на_събитие = 'Технически лагер' ,Event_Status = 'Планиран' ,Event_Budget = 10 000 } ,
нов Събитие ( ) { Име_на_събитие = 'Маркетинг лагер' ,Event_Status = 'Завършен' ,Event_Budget = 5000 } ,
нов Събитие ( ) { Име_на_събитие = 'Друго' ,Event_Status = 'Планиран' ,Event_Budget = 1000 } ,
нов Събитие ( ) { Име_на_събитие = 'политика' ,Event_Status = 'Планиран' ,Event_Budget = 13000 } ,
нов Събитие ( ) { Име_на_събитие = 'Финанси' ,Event_Status = 'Завършен' ,Event_Budget = 20 000 } ,
} ;

//Event_Budget по-голям от 5000.
беше резултат = събития . Където ( inp1 => inp1 . Събитие_Бюджет > 5000 ) ;
за всеки ( беше i в резултат ) {
Конзола . WriteLine ( „ИМЕ:“ + i . Име_на_събитие + ' СТАТУС: ' + i . Състояние_на събитието + ' БЮДЖЕТ: ' + i . Събитие_Бюджет ) ;
}
}
}

публичен клас Събитие {
публичен низ Име_на_събитие { получавам ; комплект ; }
публичен низ Състояние_на събитието { получавам ; комплект ; }
публичен вътр Събитие_Бюджет { получавам ; комплект ; }
}

Изход:

Има три записа в списъка „събития“ с Event_Budget, по-голям от 5000.

Обяснение:

1. Първо създаваме клас „Събитие“ с три атрибута.

2. След това създаваме списък от пет събития.

3. Използване на inp1 => inp1.Event_Budget > 5000 ламбда израз, избираме записите с Event_Budget, по-голям от 5000.

Пример 5:

Използвайте предишния код и променете ламбда израза. Върнете събитията с Event_Name, което завършва с „Camp“ и с Event_Status, което е „Planned“.

//Ламбда израз - Event_Name завършва с 'Camp' и Event_Status е 'Planned'.
беше резултат = събития . Където ( inp1 => inp1 . Име_на_събитие . Завършва със ( 'Лагер' ) && inp1 . Състояние_на събитието == 'Планиран' ) ;
за всеки ( беше i в резултат ) {
Конзола . WriteLine ( „ИМЕ:“ + i . Име_на_събитие + ' СТАТУС: ' + i . Състояние_на събитието + ' БЮДЖЕТ: ' + i . Събитие_Бюджет ) ;
}

Изход:

Има само един запис, който отговаря и на двете условия.

Обяснение:

Тук ние определяме две условия в ламбда израза. Операторът && (и) се използва, за да направи двете условия като True. Първото условие използва метода EndsWith(), за да провери дали даден низ завършва с дадения низ. Второто условие използва оператора „Сравнение“ (==), за да провери дали и двете стойности са равни или не.

Заключение

В C# ламбда изразът приема изразите/условните изрази като свое тяло без име. Трябва да уточним параметрите. След това му се присвояват изразите. По принцип те се използват за филтриране на записите от даден източник на данни, трансформиране на елементите и избор на елементи от източника на данни/последователността. В това ръководство обсъдихме петте различни примера, които избират, филтрират и трансформират елементите с помощта на ламбда израза.