이번 포스팅에서는 C# 문법 중 하나인, LINQ에 대해 알아보도록 하겠습니다.
LINQ란 Language-Intergreated Query의 약자?로써, .NET Framework 버전 3.5부터 도입이 되었습니다.
그냥 쉽게 간단히 얘기해 C#에서 데이터에 대해 질문을 하고, 해당 질문을 통해 데이터를 찾아가는 것이라고 이해하시면 되겠습니다~~
데이터베이스에서 쿼리(SQL) 구문을 사용해 보신 분들이라면,
쉽게 이해하시고 사용하실 수 있을거라 생각합니다.
기본 LINQ 구문
from 임의요소 변수 in 데이터소스 변수
where 조건
select 데이터를 가지고 있는 변수(임의요소 변수)
다만 기존의 ANSI 쿼리문과의 문법 구조가 조금은 다르기 때문에 해당 문법을 익히실 때, 조금은 헷갈리실 수 있지만 여러 번 LINQ 문법을 사용하시다 보면 금방 익숙해 지실거라 생각합니다.^^
LINQ 사용 시나리오
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace test
{
class Program
{
static void Main(string[] args)
{
//Student 객체 선언
Student student1 = new Student();
Student student2 = new Student();
Student student3 = new Student();
//Student형의 List 변수 student_List선언
List<Student> student_List = new List<Student>();
student1.name = "범범조조";
student1.age = 26;
student1.grade = 4;
student2.name = "홍길동";
student2.age = 24;
student2.grade = 3;
student3.name = "장영실";
student3.age = 39;
student3.grade = 2;
student_List.Add(student1);
student_List.Add(student2);
student_List.Add(student3);
//20대 학생들을 조회하는 LINQ 구문
var Twenty_Student = from _student in student_List
where _student.age >= 20 && _student.age < 30
orderby _student.age ascending
select _student;
//30대 학생들을 조회하는 LINQ 구문
var Thirty_Student = from _student in student_List
where _student.age > 30
orderby _student.age ascending
select _student;
foreach(var Stu in Twenty_Student)
{
Console.WriteLine("나이가 20대인 학생은 = {0} 입니다.", Stu.name);
}
Console.WriteLine();
Console.WriteLine();
Console.WriteLine();
foreach (var Stu in Thirty_Student)
{
Console.WriteLine("나이가 30대인 학생은 = {0} 입니다.", Stu.name);
}
}
class Student
{
public string name { get; set; }
public int age { get; set; }
public int grade { get; set; }
}
}
}
참고로 LINQ구문은 from~where~select 구문으로 진행됩니다!
또한, 저는 위에서 LIST 컬렉션을 이용하여 예제 코드를 작성 하였지만 데이터 소스, Database, 컬렉션, 배열로부터 여러 데이터를 모두 LINQ를 이용하여 다룰 수 있습니다~~