C#, LINQ, 사용자 정의 클래스 검색 방법

 

 

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;

}

}

}

 

 

 

결과는 아래와 같습니다.

 

 

 

 


Leave a Comment