DataView 性能

本主题讨论使用 DataView DataView 构造一个索引。 索引包含从表或视图中的一个或多个列生成的键。 这些键存储在结构中,这种结构可使DataView 能够快速有效地查找行或与键值关联的行。 使用索引的操作(如筛选和排序)可显著提高性能。 创建DataView 及修改任何排序或筛选信息时,均会生成DataView 的索引。 创建DataView 然后设置排序或筛选信息会使索引生成至少两次:一次是在创建DataView 时,另一次是在修改任何排序或筛选属性时。 有关使用DataView 进行筛选和排序的更多信息,请参见使用 DataView 进行筛选 (LINQ to DataSet)使用 DataView 进行排序 (LINQ to DataSet)

如果要返回特定数据查询的结果而不是提供数据子集的动态视图,则可以使用 DataViewFindFindRows 方法,而不设置RowFilter 属性。RowFilter 属性最适合用于用绑定控件显示筛选结果的数据绑定应用程序。设置 RowFilter 属性会重新生成数据的索引,从而增加应用程序的系统开销并降低性能。FindFindRows 方法使用当前索引,而不要求重新生成索引。如果只想调用FindFindRows 一次,则应使用现有的DataView如果想要调用FindFindRows 多次,则应该创建一个新的DataView 以便对想要搜索的列重新生成索引,然后调用FindFindRows 方法。有关FindFindRows 方法的更多信息,请参见查找行

下面的示例使用 Find 方法来查找姓氏为“Zhu”的联系人。

类的 FindFindRows 方法并在 Web 应用程序中缓存DataView 时所具有的性能优势。

 

 

http://technet.microsoft.com/zh-cn/library/bb669089

 

 

ASP.NET 具有一种缓存机制,允许您在内存中存储需要创建大量服务器资源的对象。缓存这些类型的资源可以显著提高应用程序的性能。缓存由Cache 类实现,缓存实例专用于每个应用程序。由于创建新的DataView 对象需要大量资源,因此您可能希望在 Web 应用程序中使用此缓存功能,使得每次刷新网页时,不必重新生成DataView

在下面的示例中,对 DataView 进行缓存以便在刷新该页时不必对数据重新排序。

 

=============================

可以使用 DataViewFindFindRows 方法,根据排序关键字值搜索行。FindFindRows 方法中的搜索值是否区分大小写取决于基础 DataTableCaseSensitive 属性。搜索值必须完全匹配现有排序关键字值才能返回结果。

Find 方法返回一个整数,该整数表示匹配搜索条件的 DataRowView 的索引。如果多个行匹配搜索条件,则只返回第一个匹配DataRowView 的索引。如果未找到匹配项,Find 将返回 -1。

若要返回匹配多个行的搜索结果,可以使用 FindRows 方法。FindRows 的工作方式与Find 方法类似,不同的只是前者返回引用 DataView 中所有匹配行的 DataRowView 数组。如果未找到匹配项,DataRowView 数组将为空。

若要使用 FindFindRows 方法,必须通过将ApplyDefaultSort 设置为 true 或通过使用 Sort 属性来指定排序顺序。如果未指定排序顺序,则将引发异常。

FindFindRows 方法将一个值数组用作输入,该数组的长度与排序顺序所包含的列数相匹配。在对单个列进行排序的情况下,可以传递单个值。对于包含多个列的排序顺序,可传递一个对象数组。请注意,当对多个列进行排序时,对象数组中的值

 

http://technet.microsoft.com/zh-cn/library/yth8t382 

 

=====================================

http://msdn.microsoft.com/zh-cn/library/bb669089.aspx
http://msdn.microsoft.com/zh-cn/library/hy5b8exc(v=vs.80).aspx
由于在创建 DataView 时以及在修改任何 Sort、RowFilter 或 RowStateFilter 属性时都会生成 DataView 的索引,所以当创建 DataView 时,通过以构造函数参数的形式提供任何初始排序顺序或筛选条件,可以实现最佳性能

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值