查询类型化数据集
如果在应用程序设计时已知 DataSet 的架构,则建议在使用 LINQ to DataSet 时使用类型化 DataSet。 类型化 DataSet 是从 DataSet 中派生的类。 因此,它继承 DataSet 的所有方法、事件和属性。 此外,类型化 DataSet 还提供强类型方法、事件和属性。 这意味着可以按名称而不使用基于集合的方法来访问表和列。 这可使查询更简单、更具可读性。 有关更多信息,请参见类型化数据集 (ADO.NET)。
LINQ to DataSet 还支持对类型化 DataSet 进行查询。 对于类型化 DataSet,您不必使用泛型 Field 方法或 SetField 方法即可访问列数据。 由于 DataSet 中包括类型信息,因此属性名称在编译时可用。LINQ to DataSet 提供对正确类型的列值的访问,以便可以在编译代码时而不是在运行时捕获类型不匹配错误。
在可以开始查询类型化 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