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表示內存中數據的一個表,它完全是在內存中的一個獨立存在,包含了這張表的全部信息。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;
}
}