728x90
Where()
조건을 걸어 만족하는 요소를 추려내는 필터 역할을 한다.
var smallNumbers = numbers.Where(n => n < 5);
Select()
입력값을 다른 타입으로 변환하는 용도로 사용된다.
var allNumbers = numbers.Select(n -> n);
var squares = numbers.Select(n =>
new { Number = n, Square = n * n });
OrderBy()
정렬에 사용된다.
ThenBy()
OrderBy로 정렬 후 재 정렬이 필요할 때 사용된다.
var people = employees.Where(e => e.Age > 30).
OrderBy(e => e.LastName).
ThenBy(e => e.FirstName).
ThenBy(e => e.Age);
OrderByDescending(), ThenByDescending()
내림차순으로 정렬할 때 사용된다.
var people = from e in employees
where e.Age > 30
orderby e.LastName descending, e.FirstName, e.Age
select e;
GroupBy()
그룹에 대한 시퀀스를 반환한다. 그룹이란 하나의 키와 값의 리스트로 구성된 타입을 말한다.
var results = employees.GroupBy(e => e.Department).
Select(d => new { Department = d.Key, Size = d.Count()});
SelectMany()
2개의 입력 시퀀스를 이용하여 카티전 곱(Cartesian product)을 생성한다.
첫 번째 매개변수 : 첫 번째 입력 시퀀스의 각 요소에 두 번째 입력 시퀀스 매핑한다.
두 번째 매개변수 : 두 입력 시퀀스를 이용하여 출력 시퀀스를 생성하는 함수가 온다.
int[] odds = { 1, 3, 5, 7 };
int[] evens = { 2, 4, 6, 8 };
var values = odds.SelectMany(oddNumber => evens,
(oddNumber, evenNumber) =>
new {
oddNumber,
evenNumber,
Sum = oddNumber + evenNumber
});
Join()
into 절이 포함되지 않은 경우 사용된다.
into 사용
var query = from num in numbers
join label in labels on num.ToString() equals label
select new { num, label };
Join 사용
var query = numbers.Join(labels, num => num.ToString(),
label => label, (num, label) => new { num, label });
GroupJoin()
into 절이 포함된 경우 사용되는 Join
into 사용
var groups = from p in projects
join t in tasks on p equals t.Parent
into projTasks
select new { Project = t, projTasks };
GroupJoin 사용
var groups = projects.GroupJoin(tasks,
p => p, t => t.Parent, (p, projTasks) =>
new { Project = p, TaskList = projTasks });
반응형
'개발공부 > C#' 카테고리의 다른 글
[Effective C#] 아이템 38 : 메서드보다 람다 표현식이 낫다. (0) | 2021.12.13 |
---|---|
[Effective C#] 아이템 37 : 쿼리를 사용할 때는 즉시 평가보다 지연 평가가 낫다. (0) | 2021.12.12 |
[Effective C#] 아이템 35 : 확장 메서드는 절대 오버로드하지 마라 (0) | 2021.12.10 |
[Effective C#] 아이템 34 : 함수를 매개변수로 사용하여 결합도를 낮추라 (0) | 2021.12.09 |
[Effective C#] 아이템 32 : Action, Predicate, Function과 순회 방식을 분리하라 (0) | 2021.12.08 |