datatable 与dataview的区别
一、DataTable
DataTable表示内存中数据的一个表,它完全是在内存中的一个独立存在,包含了这张表的全部信息。DataTable可以是从通过连接从数据库中读取出来形成的一个表,一旦将内容读到DataTable中,此DataTable就可以跟数据源断开而独立存在;也可以是完全由程序自己通过代码来建立的一个表。
二、DataView
DataView表示用于排序、筛选、搜索、编辑和导航的 DataTable 的可绑定数据的自定义视图。可以将DataView同数据库的视图类比,不过有点不同,数据库的视图可以跨表建立视图,DataView则只能对某一个DataTable建立视图。DataView一般通过DataTable.DefaultView 属性来建立,再通过通过RowFilter 属性和RowStateFilter 属性建立这个DataTable的一个子集。
DataView是建立在DataTable基础上的,DataView.Table 属性可以得到此DataView对应的那个DataTable。DataView的行叫DataRowView,可以从DataRowView直接通过DataRowView.Row 属性得到此DataRowView对应的DataRow。
------------1.可绑定 2.实现IEnumerable 3.行可转成object---------------------------------------
DataTable dt = dt1;
if ((dt == null) || ((dt.Rows).Count < 1)) return;
IEnumerable dv = (IEnumerable)((IListSource)dt).GetList();//将datatable转成dataview
foreach (Object o in dv)
{
PropertyDescriptorCollection propDesColl = TypeDescriptor.GetProperties(o);
foreach (PropertyDescriptor pd in propDesColl)
{
Type type = pd.PropertyType;
}
}