Dim _employees As DataTable = orig.Tables("Orders").Clone() _employees.TableName = "Employees"
' Remove unneeded columns _employees.Columns.RemoveAt(0) _employees.Columns.RemoveAt(0) Dim i As Integer For i = 2 To _employees.Columns.Count - 1 _employees.Columns.RemoveAt(2) Next
最后,你还必须清除 employees 表中的重复行。在本例中,对 Orders 表的排序有助于简化该操作。你可以先创建 Orders 表的已排序视图(sorted view),然后循环遍历所有行。
Dim employeeKey As Integer = 0 Dim view As DataView = New DataView(_dataset.Tables("Orders")) view.Sort = "employeeid"
Dim rowView As DataRowView For Each rowView In view If employeeKey <> Convert.ToInt32(rowView("employeeid")) Then ' select distinct _employees.ImportRow(rowView.Row) employeeKey = Convert.ToInt32(rowView("employeeid")) End If Next
' Add to the DataSet _dataset.Tables.Add(_employees)
总结
本文示范了一个复杂的 SQL 查询实例,并讨论了 3 种提高其效率的方案。不得不承认,经典的 ADO 对于此类问题的解决帮助有限,而 ADO.NET 却能让你构造一种功能强大的离线数据对象模型以提高程序性能。本文提到了几种解决方案,究竟哪种是最佳选择?很难说。影响运行效率的因素非常多,比如:网络的有效带宽,数据的继承一致性,程序对数据稳定性的要求,等等。为了确定最佳方案,你就必须逐一尝试各种方案,分别测试其性能。 上一页 [1] [2] [3] [4] [5] [6]
|