상세 컨텐츠

본문 제목

Dynamic LINQ

Web Development

by thankee 2008. 12. 4. 11:01

본문

Basic Dynamic LINQ C# Sample의 DynamicLibrary.cs를 프로젝트에 포함 시킴으로서, Dynamic LINQ를 사용할 수 있습니다. 이는 모든 LINQ에서 사용가능합니다.(SQL, XML, Object, DataSet

LINQ를 사용하면, 정적인 쿼리문을 사용할 수 밖에 없습니다. 즉, 개발자에 의해서 작성된 LINQ Query는 변경될 수 없다는 의미입니다. 만약에 동적으로 이러한 쿼리문의 일부가 상황에 따라서 바뀌어야한다면, Dynamic Query가 대안이 될 수 도 있습니다. Dynamic Query는 String 형태의 매개변수를 받아들이는 Dynamic Method를 제공합니다. 이 매개변수에 원하는 동적인 String를 적용함으로서 동적인 LINQ를 구현할 수 있습니다. 예제는 다음과 같습니다.

Normal LINQ Query

NorthwindDataContext northwind = new NorthwindDataContext();
var query = from p in northwind.Products
                 where p.CategoryID == 3 && p.UnitPrice > 3
                 orderby p.SupplierID
                 select p;
GridView1.DataSource = query;
GridView1.DataBind();

Dynamic Query

NorthwindDataContext northwind = new NorthwindDataContext();
var query = northwind.Products
                     .Where("CategoryID = 3 AND UnitPrice > 3")
                     .OrderBy("SupplierID");
GridView1.DataSource = query;
GridView1.DataBind();

예제를 보면, 기존의 LINQ문장과 비교할때 크게 위화감이 들지 않습니다. 기존의 LINQ부분에서 몇가지 부분만이 DynamicLibrary.cs에서 제공하는 Method로 대체되었을 뿐입니다.

Dynamic LINQ를 사용하기 위한 샘플

Where

Select

OrderBy

Take

Skip

GroupBy

Any

Count

관련글 더보기