DataView和DataTable的区别、联系、以及相互转化方法

一、定义区别

  1. DataTable:表示内存中数据的一个表,它完全是在内存中的一个独立存在,包含了这张表的全部信息。

    建立方式
    ①通过连接数据库后从中读取出来跟数据源断开、独立存在的一个表;
    ②完全由程序通过代码来建立的一个表。

  2. DataView:表示用于排序、筛选、搜索、编辑和导航的 DataTable 的可绑定数据的自定义视图。

  3. DataRowView:表示

通过DataRowView.Row 属性得到此DataRowView对应的DataRow

可以将DataView同数据库的视图类比,不过二者存在以下区别。

DataView视图
只能对某一个DataTable建立视图可以跨表建立视图
通过DataTable.DefaultView属性来建立,通过DataTable.DefaultView的RowFilter 属性和RowStateFilter 属性筛选这个DataTable的一个行子集。

二、相互联系

DataViewDataTable
建立在DataTable基础上
DataView.Table 属性可以得到此DataView对应的DataTable
DataView dv = dt.DefaultView;DataTable dt = dv.ToTable();

DataView的toTable和Table

toTableTable
方法属性
通过RowFilter等过滤后的数据创建新实例返回原始数据
会对DataView本身的数据产生影响不会对DataView本身的数据产生影响

三、相互转化

1.dataTable转成dataview
方法一:

        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;
            }
        }

方法二:

IEnumerable dv = (IEnumerable)((IListSource)dt).GetList();

2.将DataView转换为DataTable

(1).DataView.ToTable()
根据现有DataView中的行,创建并返回一个新的DataTable。

(2).DataView.ToTable(String)
参数String为返回的DataTable的名称。

注意:输出的表与输入表的列相同,不可自定义。

(3).DataView.ToTable(Boolean,String[]) || DataView.ToTable(Boolean,String[],String[],…)
参数Boolean为true,去重;为false,不去重。

数组String[]为显示返回列值的集合。去重是针对String去重的。

注意:参数Boolean且默认为false;可自定义返回的列。

DataView dv = new DataView(table);//table是DataTable类型的对象
table = dv.ToTable(true,"ID");//去重,且只返回ID列

(4).DataView.ToTable(String,Boolean,String[])
根据现有DataView中的行,创建并返回一个新的DataTable。比3多一个参数,可以定义返回表的名称。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值