형식화된 데이터 집합 쿼리
응용 프로그램 디자인 타임에 DataSet의 스키마를 알고 있는 경우 LINQ to DataSet을 사용할 때 형식화된 DataSet을 사용하는 것이 좋습니다. 형식화된 DataSet은 DataSet에서 파생된 클래스입니다. 따라서 DataSet의 모든 메서드, 이벤트 및 속성이 상속됩니다. 또한 형식화된 DataSet에서는 강력한 형식의 메서드, 이벤트 및 속성을 제공합니다. 즉, 컬렉션 기반의 메서드 대신 이름을 사용하여 테이블과 열에 액세스할 수 있습니다. 이렇게 하면 간단하고 이해하기 쉬운 쿼리를 만들 수 있습니다. 자세한 내용은 형식화된 DataSets(ADO.NET)을 참조하십시오.
LINQ to DataSet은 형식화된 DataSet에 대한 쿼리도 지원합니다. 형식화된 DataSet을 사용하면 열 데이터에 액세스하기 위해 제네릭 Field 메서드 또는 SetField 메서드를 사용하지 않아도 됩니다. DataSet에 형식 정보가 있기 때문에 컴파일 타임에 속성 이름을 사용할 수 있습니다. LINQ to DataSet에서는 정확한 형식으로 열 값에 액세스하므로 런타임이 아니라 코드가 컴파일될 때 형식 불일치 오류가 catch됩니다.
형식화된 DataSet을 쿼리하려면 먼저 Visual Studio 2008에서 데이터 집합 디자이너를 사용하여 클래스를 생성해야 합니다. 자세한 내용은 방법: 형식화된 데이터 집합 만들기을를 참조하십시오.
예제
다음 예제에서는 형식화된 DataSet에 대한 쿼리를 보여 줍니다.
var query = from o in orders
where o.OnlineOrderFlag == true
select new { o.SalesOrderID,
o.OrderDate,
o.SalesOrderNumber };
foreach(var order in query)
{
Console.WriteLine("{0}\t{1:d}\t{2}",
order.SalesOrderID,
order.OrderDate,
order.SalesOrderNumber);
}
Dim orders = ds.Tables("SalesOrderHeader")
Dim query = _
From o In orders _
Where o.OnlineOrderFlag = True _
Select New {SalesOrderID := o.SalesOrderID, _
OrderDate := o.OrderDate, _
SalesOrderNumber := o.SalesOrderNumber}
For Each Dim onlineOrder In query
Console.WriteLine("{0}\t{1:d}\t{2}", _
onlineOrder.SalesOrderID, _
onlineOrder.OrderDate, _
onlineOrder.SalesOrderNumber)
Next