LINQ는 C#에서만?
링크는 다른 닷넷언어(C++, DLR, F# 등) 에서는 사용할 수 없습니다. 오직 VB와 C#에서만 링크 사용이 가능합니다. MS에서는 LINQ 쿼리식을 실행 할 수 있도록 C#컴파일러를 개선했습니다. 컴파일러에서 CLR이 이해할수있도록 코드를 번역해서 보내줍니다. 그럼 컴파일러에서 어떻게 번역을 하는지(일반 메소드 호출로 변경하는지) 알아보겠습니다.
LINQ의 쿼리식인 from, where, orderby, select 등은 System.Linq 네임스페이스에 정의되어 있는 IEnumerable<T>의 확장 메소드를 통해 사용가능합니다. Where(), OrederBy(), Select() 등의 호출 코드가 그 예입니다.
예제 코드를 작성해봅니다.
연습
using System;
using System.Linq;
namespace LinqSimpleExample2
{
class Profile
{
public string Name { get; set; }
public int Height { get; set; }
}
class Program
{
static void Main(string[] args)
{
Profile[] arrProfile =
{
new Profile(){Name = "정우성", Height = 186},
new Profile(){Name = "김태희", Height = 158},
new Profile(){Name = "고현정", Height = 172},
new Profile(){Name = "이문세", Height = 178},
new Profile(){Name = "하하", Height = 171}
};
var profiles = arrProfile.Where(profile => profile.Height < 175).
OrderBy(profile => profile.Height).
Select(profile => new
{
Name = profile.Name,
Height = profile.Height
});
foreach (var profile in profiles)
{
Console.WriteLine($"이름 : {profile.Name}, 키 : {profile.Height}");
}
}
}
}
출력
LINQ의 표준 연산자
링크의 표준연산자를 사용해보는 이유는 C#이 지원하는 쿼리식 문법의 양이 적기 때문입니다. LINQ의 표준 연산 메소드는 53개인 반면에 C#의 쿼리식은 단 11개 뿐입니다. 쿼리식만으로도 많은 데이터를 처리할 수 있지만, 다양한 연산 메소드를 더 알고 있는다면 조금 더 빠른 작업이 가능할겁니다.