如果在应用程序设计时已知DataSet的架构,我们建议在使用LINQ to DataSet时使用类型化的DataSet。 类型化 DataSet 是从 DataSet 中派生的类。 因此,它将继承 a DataSet. 的所有方法、事件和属性。 此外,类型化 DataSet 还提供强类型方法、事件和属性。 这意味着你可以按名称访问表和列,而不是使用基于集合的方法。 这使得查询更简单且更易于阅读。 有关详细信息,请参阅 类型化数据集。
LINQ to DataSet 还支持对类型化的 DataSet查询。 使用类型化 DataSet时,无需使用泛型 Field 方法或 SetField 方法来访问列数据。 属性名称在编译时可用,因为类型信息包含在其中 DataSet。 LINQ to DataSet 能以正确类型访问列值,以便在代码编译时捕获类型不匹配错误,而不是在运行时。
在可以开始查询类型化 DataSet 之前,必须先通过使用 Visual Studio 中的数据集设计器生成该类。 有关详细信息,请参阅 创建和配置数据集。
示例:
下面的示例演示对类型化 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