C# LINQ 람다 식

C Linq Lamda Sig



C#의 람다 식은 식/조건문을 이름 없이 직접 본문으로 사용합니다. 매개변수를 지정해야 하며 표현식이 매개변수에 할당됩니다. LINQ(Language Integrated Query)로 작업하는 동안 데이터 원본에 있는 데이터를 변환하거나 한 데이터 원본을 다른 데이터 원본으로 변환해야 하는 요구 사항이 있을 수 있습니다. 이 가이드에서는 람다 식을 지정하여 데이터 원본에서 레코드를 필터링하고 데이터 원본에서 레코드를 선택하는 방법을 살펴봅니다.

통사론:

  1. 람다 식: (매개변수) => 표현식
  2. 람다 문: { 조건문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#에서 람다 식은 식/조건문을 이름 없이 본문으로 사용합니다. 매개변수를 지정해야 합니다. 그런 다음 표현식이 할당됩니다. 기본적으로 이들은 주어진 데이터 소스에서 레코드를 필터링하고, 요소를 변환하고, 데이터 소스/시퀀스에서 요소를 선택하는 데 사용됩니다. 이 가이드에서는 람다 식을 사용하여 요소를 선택, 필터링 및 변환하는 다섯 가지 예에 대해 설명했습니다.