.NET 中的 DataView 和 DataTable 有什么区别? 据我了解,DataView只是DataTable的错误呈现。 我什么时候应该使用 DataView?
当您想要运行查询并在控件中显示数据子集时,DataView 可以帮助您。这只是一个示例,请查看 MSDN DataView 示例,它解释了您应该在何处将 DataView 与 DataTable 一起使用...
数据表
数据表是单个数据库表的内存表示。您可以将其视为以相同的方式具有列和行。 DataTable 是 ADO.NET 库中的中心对象。使用 DataTable 的其他对象包括 DataSet 和 DataView。
查看 MSDN DataTable 类了解更多详细信息。
数据视图
数据视图是数据表的视图,有点像sql视图。它允许您对行进行过滤和排序 - 通常用于绑定到 Windows 窗体控件。
此外,可以自定义 DataView 以显示 DataTable 中的数据子集。此功能允许您将两个控件绑定到同一个 DataTable,但显示不同版本的数据。例如,一个控件可以绑定到显示表中所有行的 DataView,而第二个控件可以配置为仅显示已从 DataTable 中删除的行。 DataTable 还有一个 DefaultView 属性,它返回表的默认 DataView。
查看 MSDN DataView 类了解更多详细信息。
Datatable
是根据您的数据库查询提取的无序且未经过滤的 DataRow 集合。 (此查询可能有多个表连接在一起,但您仍然有一个数据表作为查询的结果)。例如:
using(SqlConnection cn = GetConnection())
{
cn.Open();
SqlDataAdapter da = new SqlDataAdapter("SELECT * FROM Customers", cn);
DataTable dt = new DataTable();
da.Fill(dt);
// At this point dt is filled with datarows extracted from the database in no particular order
// And the DefaultView presents the same record organization (or lack of), but...
// Order on the default view by CustomerName
dt.DefaultView.Sort = "CustomerName";
foreach(DataRowView rv in dt.DefaultView)
Console.WriteLine(rv["CustomerName"].ToString();
// A new dataview with only a certain kind of customers ordered by name
DataView dvSelectedCust = new DataView(dt, "CreditLevel = 1", "CustomerName", DataViewRowState.Unchanged);
foreach(DataRowView rv in dvSelectedCust)
Console.WriteLine(rv["CustomerName"],ToString();
}
当然,创建和维护 DataView 会影响性能,因此您可以选择仅在真正需要时才使用它
DataTable
表示单表表示,而 DataSet
表示多表表示。
这意味着通过使用
DataTable
我们只能保存数据库中的一张表,如果我们使用 DataSet
我们可以一次保存多个表...
DataView
表示 DataSet
中可用的数据视图...(DataSet
中可用的表格视图)
它用于查找记录、排序、过滤记录...通过使用 DataView
。
您可以使用DataView对DataTable进行过滤。例如,如果您有一个包含所有参数的数据集,您可以使用 DataView 找到其中一个参数:
DataView dv = new DataView();
dv = new DataView(parameterDs.Tables[0], "ParameterName = '@" + parameter.Key + "'", string.Empty, DataViewRowState.CurrentRows);
互联网上有很多与此相关的链接,但仅供总结
DataView 是 DataTable 的自定义视图,用于排序、过滤、搜索、编辑和导航。 DataView 不存储数据,而是表示其相应 DataTable 的连接视图。
您可以在 VB 中查看简单的 DataView 示例。
DataView 是用于过滤或应用表达式排序等的附加层..
DataView 包含诸如
RowFilter
之类的运算符
链接:http://msdn.microsoft.com/fr-fr/library/system.data.dataview.aspx