如果要返回特定数据查询的结果而不是提供数据子集的动态视图,则可以使用 DataView 的Find 或FindRows 方法,而不设置RowFilter 属性。RowFilter 属性最适合用于用绑定控件显示筛选结果的数据绑定应用程序。设置 RowFilter 属性会重新生成数据的索引,从而增加应用程序的系统开销并降低性能。Find 和 FindRows 方法使用当前索引,而不要求重新生成索引。如果只想调用Find 或FindRows 一次,则应使用现有的DataView。如果想要调用Find 或FindRows 多次,则应该创建一个新的DataView 以便对想要搜索的列重新生成索引,然后调用Find 或FindRows 方法。有关Find 和FindRows 方法的更多信息,请参见查找行。
下面的示例使用 Find 方法来查找姓氏为“Zhu”的联系人。
类的 Find 和FindRows 方法并在 Web 应用程序中缓存DataView 时所具有的性能优势。
http://technet.microsoft.com/zh-cn/library/bb669089
ASP.NET 具有一种缓存机制,允许您在内存中存储需要创建大量服务器资源的对象。缓存这些类型的资源可以显著提高应用程序的性能。缓存由Cache 类实现,缓存实例专用于每个应用程序。由于创建新的DataView 对象需要大量资源,因此您可能希望在 Web 应用程序中使用此缓存功能,使得每次刷新网页时,不必重新生成DataView。
在下面的示例中,对 DataView 进行缓存以便在刷新该页时不必对数据重新排序。
=============================
可以使用 DataView 的Find 和FindRows 方法,根据排序关键字值搜索行。Find 和FindRows 方法中的搜索值是否区分大小写取决于基础 DataTable 的CaseSensitive 属性。搜索值必须完全匹配现有排序关键字值才能返回结果。
Find 方法返回一个整数,该整数表示匹配搜索条件的 DataRowView 的索引。如果多个行匹配搜索条件,则只返回第一个匹配DataRowView 的索引。如果未找到匹配项,Find 将返回 -1。
若要返回匹配多个行的搜索结果,可以使用 FindRows 方法。FindRows 的工作方式与Find 方法类似,不同的只是前者返回引用 DataView 中所有匹配行的 DataRowView 数组。如果未找到匹配项,DataRowView 数组将为空。
若要使用 Find 或 FindRows 方法,必须通过将ApplyDefaultSort 设置为 true 或通过使用 Sort 属性来指定排序顺序。如果未指定排序顺序,则将引发异常。
Find 和 FindRows 方法将一个值数组用作输入,该数组的长度与排序顺序所包含的列数相匹配。在对单个列进行排序的情况下,可以传递单个值。对于包含多个列的排序顺序,可传递一个对象数组。请注意,当对多个列进行排序时,对象数组中的值
http://technet.microsoft.com/zh-cn/library/yth8t382
=====================================
http://msdn.microsoft.com/zh-cn/library/hy5b8exc(v=vs.80).aspx
由于在创建 DataView 时以及在修改任何 Sort、RowFilter 或 RowStateFilter 属性时都会生成 DataView 的索引,所以当创建 DataView 时,通过以构造函数参数的形式提供任何初始排序顺序或筛选条件,可以实现最佳性能