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로 대체되었을 뿐입니다.
Where
Select
OrderBy
Take
Skip
GroupBy
Any
Count