728x90
반응형
1. 핵심 정리
using System;
using System.Collections.Generic;
using System.Linq;
class Program {
static void Main() {
string[] arr = {"kim", "shin", "lee", "park", "choi"};
// Fluent Syntax
var e = arr.Where(s => s.Contains("i"))
.OrderBy(s => s.Length)
.Select(s => s.ToUpper());
foreach(var n in e)
Console.WriteLine(n);
}
}
문자열이 5개 들어있는 배열이 있다.
해당 배열에서 LINQ를 이용해서 필터링 후 요소를 꺼내보려고 한다.
먼저 Where을 통해 문자열 중 i가 포함되어 있는 문자열을 찾는다. (kim, shin, choi)
그 다음 OrderBy로 정렬 순서를 문자열의 길이로 한다. (kim, shin, choi)
마지막으로 Select를 통해 문자열을 대문자로 출력한다. (KIM, SHIN, CHOI)
이러한 방식으로 확장 메소드를 부르는게 정확한 원리고
이러한 표기법을 LINQ Fluent Syntax라고 한다.
using System;
using System.Collections.Generic;
using System.Linq;
class Program {
static void Main() {
string[] arr = {"kim", "shin", "lee", "park", "choi"};
// Query Syntax
var e = from s in arr
where s.Contains("i")
orderby s.Length
select s.ToUpper();
foreach(var n in e)
Console.WriteLine(n);
}
}
다음은 SQL쿼리문과 비슷한데
맨 처음에 from으로 배열의 요소를 받는다.
그리고 모든 메소드는 소문자로 적는다. 사용방법은 위의 코드와 같다.
이러한 표기법을 Query Syntax라고 부른다.
위의 두 코드는 결과는 같다.
사실 아래 코드로 적으면 위의 코드로 컴파일러가 바꿔주는 방식이다.
아래 코드도 틀린 코드는 아니고 다른 방법일 뿐이니 보면 좋을 것 같다.
728x90
반응형
'프로그래밍 > C#' 카테고리의 다른 글
[C#] 스레드 클래스 멤버 (0) | 2020.05.08 |
---|---|
[C#] 스레드 개념 (Thread) (0) | 2020.05.08 |
[C#] LINQ 원리 (0) | 2020.05.07 |
[C#] LINQ 개념 (Language INtegrated Query) (0) | 2020.05.06 |
[C#] 코루틴 (COROUTINE) (3) (0) | 2020.05.05 |