참고 사이트 : https://learn.microsoft.com/ko-kr/dotnet/csharp/linq/
LINQ(Language-Integrated Query)란 C#에 쿼리 기능을 통합한 기술로,
데이터 원본(SQL, XML, 컬렉션 등)에 관계 없이 일관된 구문으로 쿼리를 작성할 수 있게 해준다.
쿼리문은 강한 형식으로 컴파일 시점에 형식 검사가 가능하다.
쿼리 식과 메서드 방식 두 가지가 있으며, 의미나 성능 차이는 없다.
일부 작업(Count, Max 등)은 메서드 구문에서만 표현 가능하다.
쿼리 식을 사용하여 데이터를 필터링, 정렬, 그룹화 등이 가능하다.
from, where, select 등의 키워드를 사용해 가독성이 높은 코드를 작성할 수 있다.
쿼리는 쿼리 변수를 반복하여 foreach로 실행하기 전까지 실행되지 않는다.
쿼리 식을 사용하여 표현할 수 있는 모든 쿼리는 메서드 방식을 사용해서 표현할 수 있고,
쿼리 식은 컴파일 시에 메서드 구문으로 변환된다.
int[] scores = [97, 92, 81, 60];
var scoreQuery = from score in scores
where score > 60
select score;
foreach(var i in scoreQuery)
{
Console.Write(i + " "); // 97, 92, 81
}
메서드 방식은 메서드 체이닝를 사용해서 데이터를 필터링, 정렬, 그룹화 등을 하는 방식이다.
int[] scores = [97, 92, 81, 60];
var passScore = scores.Where(score => score > 60).OrderByDescending(score => score);
foreach(var score in passScores)
{
Console.Write(score + " ");
}