ds.merge(ds1)ds.merge(ds2)ds中会产生一摸一样的行,能不能对其产生类似于sql中distinct的效果?

解决方案 »

  1.   

    用select语句,直接把distinct后的记录绑定到DataSet
      

  2.   

    我的结果不能再用sql语句了,结果存在ds中并过来的,数据本身在ds1,ds2中都已经distinct了,并不重复,合并在ds中就重复了
      

  3.   

    去除两个DataTable 中的重复纪录,可以使用
       DataTable myTable = new DataTable();
       DataColumn myCol1 = myTable.Columns.Add("Column1");
       DataColumn myCol2 = myTable.Columns.Add("Column2");
       myTable.ChildRelations.Add("New Relation", myCol1, myCol2);
    给两个DataTable 添加Relation,然后根据Relation来判断是否存在关联的纪录,有就将其中一个Table中的记录删除,然后在用DataSet.Merge()来合并;
      

  4.   

    如果有相同的行,可以由id或者别的字段选择!先声明一个DataView dv,然后用dv.findrows选择相同的行,返回一个数组,用DataRowView[] drView=dv.FindRows(条件);得到符合条件的行数组,然后可以删掉,ds.Table[0].Row.delete
      

  5.   

    试试放在一个查询里面,然后在语句里面用distinct ds1,ds2.
      

  6.   

    win911(Young)的办法似乎不错,性能也应该能接受。还有更简便的办法吗?最还性能好一点。
    最好能不遍历rows
      

  7.   

    我解决了,最后还是选用双层遍历的方法,关系的方法我没实现,出了个错。不知道谁实现了?share一下 Private Function UniqueDS(ByVal ds As DataSet, ByVal ds2 As DataSet) As DataSet
            ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
            '双层遍历检查,去掉重复的行
            Dim drs As New ArrayList
            For Each dr2 In ds2.Tables(0).Rows
                For Each dr In ds.Tables(0).Rows
                    If dr.Item(0) = dr2.Item(0) Then
                        drs.Add(dr2)
                    End If
                Next
            Next        Dim i As Int32
            For i = 0 To drs.Count - 1
                ds2.Tables(0).Rows.Remove(drs.Item(i))
            Next
            ds2.AcceptChanges()
            Return ds2
            ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
        End Function