LINQ는 데이터 작업에 특화된 C#의 기능이다.
LINQ (Language INtegrated Query)의 약어. C#언어에 통합된 데이터 질의(query) 기능
쿼리는 기본 적으로 다음과 같은 내용을 포함
From : 어떤 데이터 집합에서 찾을 것인가?
Where : 어떤 값의 데이터를 찾을 것인가?
Select : 어떤 항목을 추출할 것 인가?
LINQ 예제
예를 들어보자.
다음과 같이 키와 이름을 필드로 갖는 Profile 클래스가 있다.
class Profile
{
public string Name {get; set;}
public int Height {get; set;}
public Profile(string name, int height)
{
this.Name = name;
this.Height = height;
}
public override string ToString()
{
return string.Format("{0}, {1}", this.Name, this.Height);
}
}
그리고 Profile 배열을 만들어보자.
Profile[] arrProfile = {
new Profile("Stephen Curry", 191),
new Profile("Kevin Durant", 206),
new Profile("LeBron James", 203),
new Profile("James Harden", 196),
new Profile("Russell Westbrook", 190)
};
여기서 키가 200 이하인 Profile들을 오름차순으로 정렬하고자 한다면?
LINQ를 모른다면 다음과 같이 할 것이다.
List<Profile> profiles = new List<Profile>();
foreach(Profile profile in arrProfile)
{
if(profile.Height < 200)
profiles.Add(profile);
}
profiles.Sort(
(p1, p2) => {
return p1.Height - p2.Height;
}
);
foreach(var profile in profiles)
Console.WriteLine(profile);
그러나 LINQ를 활용하면 다음과 같이 코드를 간결히 줄일 수 있다.
var profiles2 = from profile in arrProfile
where profile.Height < 200
orderby profile.Height
select profile;
foreach(var profile in profiles2)
Console.WriteLine(profile);
참조
뇌를 자극하는 C# 5.0 프로그래밍, 박상현, 한빛미디어
'아카이빙 > C#' 카테고리의 다른 글
[Effective C#] 박싱과 언박싱을 최소화하라 (0) | 2018.06.30 |
---|---|
[Effective C#] string.Format()을 보간 문자열로 대체하라 (0) | 2018.06.30 |
[C#] 람다식 (Lambda Expression) (0) | 2018.06.26 |
[C#] 이벤트와 델리게이트 (0) | 2018.06.25 |
[C#] Delegate와 익명메소드 (0) | 2018.06.25 |