
LINQ를 사용하여 In-Memory Collection 에 대하여 데이터를 다룰 수 있다.
< 예제 >
제네릭 컬렉션 타입으로 사용할 클래스를 정의 한다. Customer 클래스로 다음과 같다.
namespace LINQOverView { public class Customer { public string CustomerID { get; set; } public string City { get; set; } public override string ToString() { return CustomerID + "\t" + City; } } }
Customer 클래스 타입을 사용하여 제네릭 컬렉션을 생성한다.
public IEnumerableCreateCustomers() { return new List { new Customer { CustomerID = "ALFKI", City = "Berlin" }, new Customer { CustomerID = "BONAP", City = "Marseille" }, new Customer { CustomerID = "CONSH", City = "London" }, new Customer { CustomerID = "EASTC", City = "London" }, new Customer { CustomerID = "FRANS", City = "Torino" }, new Customer { CustomerID = "LONEP", City = "Portland" }, new Customer { CustomerID = "NORTS", City = "London" }, new Customer { CustomerID = "THEBI", City = "Portland" } }; }
제네릭 컬렉션 객체로 부터 모든 데이터를 읽어서 출력한다.
var results = CreateCustomers(); dataGridView1.DataSource = results.ToList();

제네릭 컬렉션 객체 데이터 중에서 City 가 London 인 사람만 출력한다.
var results = from c in CreateCustomers() where c.City == "London" select c; dataGridView1.DataSource = results.ToList();

< About >
우선 관리할 데이터 정보를 담고 있는 클래스를 만들었다. 고객의 ID와 사는 도시 정보를 담고 있는 Customer 클래스 이다. 나중에 출력용으로 ToString 메소드를 재정의 하여 고객의 ID 와 도시 정보를 string 으로 출력하게 하였다.
Main 함수에서 ObjectQuery 메소드를 호출하게 되는데, ObjectQuery 메소드는 객체(즉, Collection)를 쿼리하는 메소드 이다. CreateCustomers 메소드는 고객들 각각을 Customer 객체로 생성하고, List<Customer> 제네릭 컬렉션에 담아 리턴한다. 여기서 유용하게 쓰인 문법은 "컬렉션 Initializer" 이다. 제네릭 컬렉션은 모두 IEnumerable<>를 상속받으로로 IEnumerable<> 타입으로 리턴하였다.
사용된 LINQ는 select 문으로 CreateCustomers 메소드가 리턴한 컬렉션에 대하여 도시 정보가 "London" 인 정보만 컬렉션으로 뽑았다. 뽑은 컬렉션을 순환하여 출력 하였다.
순환문은 다음과 같이 작성하여도 된다.
IEnumerator ie = ht.Values.GetEnumerator(); while(ie.MoveNext()) { Button b = (Button)ie.Current; b.BackColor = Color.Blue; }
< 소스 코드 >
cfile25.uf.17760F3850AEC25A2AE535.zip
이미지 출처 : FreeM Consulting Group.
http://www.msstudy.co.kr
댓글 없음:
댓글 쓰기