통사론:
- 람다 식: (매개변수) => 표현식
- 람다 문: { 조건문1문2 … }
예 1:
5개의 문자열을 포함하는 '비료' 목록을 만듭니다. 목록에서 모든 문자열을 반환하는 람다 식을 활용합니다.
사용 체계 ;사용 시스템.링크 ;
사용 System.Collections.Generic ;
수업 Lambda식예제 {
공전 공공의 무효의 기본 ( )
{
// 비료 목록 생성
비료 나열 = 새로운 목록 ( ) ;
비료 . 추가하다 ( '요소' ) ;
비료 . 추가하다 ( '질소' ) ;
비료 . 추가하다 ( '칼륨' ) ;
비료 . 추가하다 ( '인산이암모늄' ) ;
비료 . 추가하다 ( '인' ) ;
// LambdaExpression을 사용하여 모든 비료를 선택합니다.
~였다 결과 = 비료 . 선택하다 ( 입력1 => 입력1 ) ;
각각 ( ~였다 나 ~에 결과 )
{
콘솔 . WriteLine ( 나 ) ;
}
}
}
산출:
설명:
1. '비료'라는 문자열 유형 목록을 만듭니다. 이 목록에 5개의 문자열을 추가합니다.
2. 람다 식을 사용하여 모든 비료를 선택합니다. 여기서 표현식은 '선택' 연산자와 함께 사용됩니다. 표현은 입력1 => 입력1. 그런 다음 'foreach' 루프를 사용하여 람다 식에서 반환되는 문자열을 표시합니다.
예 2:
'인산염'을 포함하는 비료를 선택하려면 람다 식을 사용하십시오.
사용 체계 ;사용 시스템.링크 ;
사용 System.Collections.Generic ;
수업 Lambda식예제 {
공전 공공의 무효의 기본 ( )
{
// 비료 목록 생성
비료 나열 = 새로운 목록 ( ) ;
비료 . 추가하다 ( '요소' ) ;
비료 . 추가하다 ( '질소' ) ;
비료 . 추가하다 ( '오르토 - 인산염' ) ;
비료 . 추가하다 ( '인산이암모늄' ) ;
비료 . 추가하다 ( '인' ) ;
// LambdaExpression을 사용하여 '인산염'을 포함하는 비료를 선택합니다.
~였다 결과 = 비료 . 어디 ( 입력1 => 입력1 . 포함 ( '인산염' ) ) ;
각각 ( ~였다 나 ~에 결과 )
{
콘솔 . WriteLine ( 나 ) ;
}
}
}
산출:
'Phosphate'를 포함하는 두 개의 문자열이 있습니다.
설명:
1. '비료'라는 문자열 유형 목록을 만듭니다. 이 목록에 5개의 문자열을 추가합니다.
2. 여기서 표현식은 'Where' 연산자와 함께 사용됩니다. 표현은 inp1 => inp1.Contains('인산염'). 그런 다음 'foreach' 루프를 사용하여 람다 식에서 반환되는 문자열을 표시합니다.
예 3:
세 개의 주문을 보유하는 목록(order_quantity)이 있습니다. 각 주문에 5를 더하는 람다 식을 지정합니다.
사용 체계 ;사용 시스템.링크 ;
사용 System.Collections.Generic ;
수업 Lambda식예제 {
공전 공공의 무효의 기본 ( )
{
// 수량 목록 생성
order_quantity 나열 = 새로운 목록 ( ) ;
주문_수량 . 추가하다 ( 5 ) ;
주문_수량 . 추가하다 ( 7 ) ;
주문_수량 . 추가하다 ( 8 ) ;
// 각 주문에 대해 LambdaExpression을 5로 사용합니다.
~였다 결과 = 주문_수량 . 선택하다 ( 입력1 => 입력1 + 5 ) ;
각각 ( ~였다 나 ~에 결과 )
{
콘솔 . WriteLine ( 나 ) ;
}
}
}
산출:
[5,7,8] 목록은 [10,12,13]으로 변환됩니다.
설명:
1. 정수 유형의 수량 목록을 생성합니다.
2. 먼저 주문을 선택한 다음 각 주문에 5를 추가합니다. 따라서 '선택' 연산자가 사용됩니다. 표현은 입력1 => 입력1 + 5.
예 4:
이벤트 유형(Event_Name, Event_Status 및 Event_Budget의 세 가지 속성 포함)의 목록 데이터 원본을 만들고 5000보다 큰 Event_Budget이 있는 레코드를 반환합니다.
사용 체계 ;사용 시스템.링크 ;
사용 System.Collections.Generic ;
// 5개의 이벤트가 있는 'Event_Source'라는 클래스를 만듭니다.
공공의 수업 이벤트_소스
{
공공의 공전 무효의 기본 ( )
{
// 이벤트 목록
IList 이벤트 = 새로운 목록 ( ) {
새로운 이벤트 ( ) { 이벤트명 = '기술 캠프' ,이벤트_상태 = '예정' ,이벤트_예산 = 10000 } ,
새로운 이벤트 ( ) { 이벤트명 = '마케팅캠프' ,이벤트_상태 = '완전한' ,이벤트_예산 = 5000 } ,
새로운 이벤트 ( ) { 이벤트명 = '다른' ,이벤트_상태 = '예정' ,이벤트_예산 = 1000 } ,
새로운 이벤트 ( ) { 이벤트명 = '정치' ,이벤트_상태 = '예정' ,이벤트_예산 = 13000 } ,
새로운 이벤트 ( ) { 이벤트명 = '재원' ,이벤트_상태 = '완전한' ,이벤트_예산 = 20000 } ,
} ;
//Event_Budget이 5000보다 큽니다.
~였다 결과 = 이벤트 . 어디 ( 입력1 => 입력1 . 이벤트_예산 > 5000 ) ;
각각 ( ~였다 나 ~에 결과 ) {
콘솔 . WriteLine ( '이름: ' + 나 . 이벤트명 + ' 상태: ' + 나 . 이벤트_상태 + ' 예산: ' + 나 . 이벤트_예산 ) ;
}
}
}
공공의 수업 이벤트 {
공공의 끈 이벤트명 { 얻다 ; 세트 ; }
공공의 끈 이벤트_상태 { 얻다 ; 세트 ; }
공공의 정수 이벤트_예산 { 얻다 ; 세트 ; }
}
산출:
'events' 목록에는 Event_Budget이 5000보다 큰 세 개의 레코드가 있습니다.
설명:
1. 먼저 세 가지 속성을 가진 “Event” 클래스를 생성합니다.
2. 그런 다음 5개의 이벤트 목록을 만듭니다.
3. 사용 inp1 => inp1.Event_Budget > 5000 람다 식에서는 Event_Budget이 5000보다 큰 레코드를 선택합니다.
예 5:
이전 코드를 활용하고 람다 식을 변경하십시오. 'Camp'로 끝나는 Event_Name과 'Planned'인 Event_Status로 이벤트를 반환합니다.
//Lambda 식 - Event_Name은 'Camp'로 끝나고 Event_Status는 'Planned'입니다.~였다 결과 = 이벤트 . 어디 ( 입력1 => 입력1 . 이벤트명 . 로 끝나다 ( '캠프' ) && 입력1 . 이벤트_상태 == '예정' ) ;
각각 ( ~였다 나 ~에 결과 ) {
콘솔 . WriteLine ( '이름: ' + 나 . 이벤트명 + ' 상태: ' + 나 . 이벤트_상태 + ' 예산: ' + 나 . 이벤트_예산 ) ;
}
산출:
두 조건을 모두 만족하는 레코드는 하나뿐입니다.
설명:
여기에서는 람다 식에 두 가지 조건을 지정합니다. &&(and) 연산자는 두 조건을 True로 만드는 데 사용됩니다. 첫 번째 조건은 EndsWith() 메서드를 사용하여 문자열이 주어진 문자열로 끝나는지 확인합니다. 두 번째 조건은 '비교' 연산자(==)를 사용하여 두 값이 같은지 여부를 확인합니다.
결론
C#에서 람다 식은 식/조건문을 이름 없이 본문으로 사용합니다. 매개변수를 지정해야 합니다. 그런 다음 표현식이 할당됩니다. 기본적으로 이들은 주어진 데이터 소스에서 레코드를 필터링하고, 요소를 변환하고, 데이터 소스/시퀀스에서 요소를 선택하는 데 사용됩니다. 이 가이드에서는 람다 식을 사용하여 요소를 선택, 필터링 및 변환하는 다섯 가지 예에 대해 설명했습니다.