LINQ 에 대한 기본적인 설명은 http://whiteat.com/zbxe/54023 를 참조하세요.
사용자 정의 클래스로 LINQ 사용하기
사용자가 정의한 class Person 데이터를 검색하는 방법을 알아보겠습니다.
먼저 name 과 number 멤버를 가진 Person 을 정의 합니다.
class Person
{
public string name;
public int number;
public Person(string _name, int _b)
{
name = _name;
number = _b;
}
}
main 에 검색에 사용할 person 데이터를 추가합니다.
List<Person> persons = new List<Person>() { new Person(“aa”, 1), new Person(“dd”, 2), new Person(“aa”, 10) };
name 이 “aa”인 것을 골라내는 쿼리를 생성합니다. 이때 쿼리가 실행되지는 않고 쿼리문만 생성하는 것입니다.
즉, 이때 검색이 실행되지 않는 것입니다.~
// 쿼리 생성 (이때 쿼리가 실행되지는 않습니다.)
IEnumerable < Person > personQuery =
from persons1 in persons
where persons1.name == “aa”
select persons1;
쿼리를 실행하여 출력합니다. foreach (Person p in personQuery) 수행시 앞에서 생성한 쿼리 문이 생성되는 것입니다.~
// 쿼리 실행
foreach (Person p in personQuery)
{
Console.WriteLine(“name: “+ p.name+”, “+ p.number.ToString());
}
전체 소스
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
// 출처: http://whiteat.com
// Person 클래스를 데이터로 갖는 코드에서
// Person 데이터를 LINQ로 검색하는 예제입니다.
namespace WATLINQ1
{
class Program
{
static void Main(string[] args)
{
// 데이터 선언
List<Person> persons = new List<Person>() { new Person(“aa”, 1), new Person(“dd”, 2), new Person(“aa”, 10) };
// 쿼리 생성 (이때 쿼리가 실행되지는 않습니다.)
IEnumerable < Person > personQuery =
from persons1 in persons
where persons1.name == “aa”
select persons1;
// 쿼리 실행
foreach (Person p in personQuery)
{
Console.WriteLine(“name: “+ p.name+”, “+ p.number.ToString());
}
}
}
class Person
{
public string name;
public int number;
public Person(string _name, int _b)
{
name = _name;
number = _b;
}
}
}
결과는 아래와 같습니다.