logo资料库

DataTable合并重复行(解决方案).docx

第1页 / 共3页
第2页 / 共3页
第3页 / 共3页
资料共3页,全文预览结束
DataTable 合并重复行(解决方案) 有很多情况下,需要俩个同样架构的 DataTable 的合并操作,但合并操作的时候,会有很多 重复行的数据存在于 DataTable 中,可以通过循环的方式去处理,但这样代码比较复杂,而 且效率非常低下,DataView 提供了一个很好的解决方案。如下所示: //去掉重复行的 DataView DataView myDataView = new DataView(dataTable); string[] strComuns ={ "dataColumn", "dataType" }; dg2.DataSource = myDataView.ToTable(true, strComuns); 主要做的工作就是把存在重复行数据的 DataTable 送给 Dataview.然后使用 DataView 类的一 个 ToTable 方法中的一个重载方法。就是上面用的,一共有两个参数,第一个 bool 类型参数 就是指定装换成 DataTable 后是否保留重复行,第二个参数是一个字符串数组,用来指定转 换成 DataTable 后保留原有表中的哪些字段。字段名不区分大小写。 应用实例: public partial class DataTableMergeDemo : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { } if(!IsPostBack) { } MyTable = CreateDataSource(); this.GridView1.DataSource = MyTable; this.GridView1.DataBind(); //设置DataTable数据交互截止 private DataTable MyTable { } set { } get { } ViewState["DataSource"] = value; return (DataTable)ViewState["DataSource"]; //构建数据源 private DataTable CreateDataSource()
DataTable dt = new DataTable("DataSource"); dt.Columns.Add("Sequence"); dt.Columns.Add("UserName"); dt.Columns.Add("Address"); dt.AcceptChanges(); DataRow dr1 = dt.NewRow(); dr1["Sequence"] = "1"; dr1["UserName"] = "user1"; dr1["Address"] = "Address1"; DataRow dr2 = dt.NewRow(); dr2["Sequence"] = "2"; dr2["UserName"] = "user2"; dr2["Address"] = "Address2"; dt.Rows.Add(dr1); dt.Rows.Add(dr2); dt.Rows.Add(dt.NewRow()); dt.Rows.Add(dt.NewRow()); return dt; { } private DataTable NewTable() { } DataTable dt = MyTable.Clone(); DataRow dr1 = dt.NewRow(); dr1["Sequence"] = "1"; dr1["UserName"] = "user1"; dr1["Address"] = "Address1"; DataRow dr2 = dt.NewRow(); dr2["Sequence"] = "3"; dr2["UserName"] = "user3"; dr2["Address"] = "Address3"; dt.Rows.Add(dr1); dt.Rows.Add(dr2); return dt; protected void Button1_Click(object sender, EventArgs e) { MyTable.Merge(NewTable());
DataView dv = new DataView(MyTable); string[] columnsArray = { "Sequence", "UserName", "Address" }; MyTable = dv.ToTable(true, columnsArray); } }
分享到:
收藏