注释
此类 DataSet 和相关类是 2000 年代初的旧版 .NET Framework 技术,使应用程序能够在应用与数据库断开连接时处理内存中的数据。 这些技术对于使用户能够修改数据并将更改保留回数据库的应用特别有用。 尽管数据集是经过证实的成功技术,但新 .NET 应用程序的建议方法是使用 Entity Framework Core。 Entity Framework 提供了一种更自然的方式来将表格数据用作对象模型,并且具有更简单的编程接口。
若要搜索数据集中的特定记录,请使用 FindBy DataTable 上的方法,编写自己的 foreach 语句以循环访问表的 Rows 集合,或使用 LINQ to DataSet。
数据集区分大小写
在数据集中,表和列名称默认不区分大小写,也就是说,名为“Customers”的数据集中的表也可以称为“Customers”。这与许多数据库中的命名约定匹配,包括 SQL Server。 在 SQL Server 中,默认行为是数据元素的名称不能仅通过大小写来区分。
注释
与数据集不同,XML 文档区分大小写,因此架构中定义的数据元素的名称区分大小写。 例如,架构协议允许架构定义一个名为 Customers 的表和一个不同的名为 customers 的表。 使用的架构包含仅有大小写不同的元素,用于生成数据集类时可能会导致名称冲突。
但是,区分大小写可能是数据集中数据解释方式的一个因素。 例如,如果筛选数据集表中的数据,则搜索条件可能会返回不同的结果,具体取决于比较是否区分大小写。 可以通过设置数据集的 CaseSensitive 属性来控制筛选、搜索和排序是否区分大小写。 默认情况下,数据集中的所有表都继承此属性的值。 (可以通过设置表的 CaseSensitive 属性来覆盖每个表的此项属性。)
在数据表中找到特定行
在类型化数据集中查找具有主键值的行
若要查找行,请调用使用表主键的强类型方法
FindBy。在以下示例中,
CustomerID列是Customers表的主键。 这意味着生成的FindBy方法是FindByCustomerID。 该示例演示如何使用生成的FindBy方法为变量分配特定的DataRow变量。
使用主键值在非类型化数据集中查找行
在DataRowCollection集合中调用Find方法,并传递主键作为参数。
以下示例演示如何声明一个名为
foundRow的新行,并将 Find 方法的返回值赋给它。 如果找到主键,列索引 1 的内容会显示在消息框中。
按列值查找行
根据任何列中的值查找行
使用Select方法创建数据表,该方法会根据传递给Select方法的表达式返回DataRow数组。 有关创建有效表达式的详细信息,请参阅有关该属性的页面 Expression 的“表达式语法”部分。
访问相关记录
当数据集中的表相关时, DataRelation 对象可以使相关记录在另一个表中可用。 例如,可以提供包含 Customers 和 Orders 表的数据集。
通过在父表中调用DataRow的GetChildRows方法,您可以使用DataRelation对象来查找相关记录。 此方法返回一组与之关联的子记录。 或者,可以调用子表中 DataRow 对象的 GetParentRow 方法。 此方法从父表返回一个 DataRow 。
本页提供使用类型化数据集的示例。 有关在非类型化数据集中浏览关系的信息,请参阅 Navigating DataRelations。
注释
如果你正在使用 Windows 窗体应用程序并使用数据绑定功能来显示数据,则设计器生成的窗体可能会为应用程序提供足够的功能。 有关详细信息,请参阅 将控件绑定到 Visual Studio 中的数据。 具体而言,请参阅 数据集中的关系。
以下代码示例演示如何在类型化数据集中上下导航关系。 代码示例使用类型化的DataRow对象(NorthwindDataSet.OrdersRow)和生成的FindByPrimaryKey(FindByCustomerID)方法来查找所需的行并返回相关记录。 仅当有以下代码时,示例才能正确编译并运行:
名为
NorthwindDataSet的数据集的一个实例,其中包含Customers表。一张
Orders表。名为
FK_Orders_Customers的关系关联这两个表。
此外,两个表都需要填充数据,以便返回任何记录。
返回所选父记录的子记录
调用特定
Customers数据行的 GetChildRows 方法,从Orders表中返回行的数组:
返回所选子记录的父记录
调用特定
Orders数据行的GetParentRow方法,从Customers表中返回单行记录。
相关内容
- Visual Studio 中的 数据集工具