DataTable中如何去除重复的项【转】

上周在项目中遇到一个问题,就是获取DataTable中某一列的值,因为从数据库中检索数据时,按照2个字段进行分组,而要获得的那一列刚好在分组这两列中,所以该列的值必然有重复,于是就想到了去除重复,有了思路以后在网上看了一些方法,大都是遍历之类的,虽说功能是可以实现,但是效率太低了,最后发现了一个简单的方法,如下:

public string[] GetNamesFromDataTable(DataTable dataTable)
        {
            DataView dv = dataTable.DefaultView;
            dataTable = dv.ToTable(true, "Name");
            string[] names = new string[dataTable.Rows.Count];
            for (int i = 0; i < names.Length; i++)
            {
                names[i] = dataTable.Rows[i][0].ToString();
            }
            return names;
        }

  

解析:DataView.ToTable()方法有四个重载方法,分别如下:

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

ToTable(string tableName):功能如上,只不过是为新的DataTable赋了一个名字

ToDataTable(bool distinct,parm string[] columnNames):根据现有的DataView中的行创建并返回DataTable,distinct,为true,则返回所有列都具有不同值的行,第二个参数为一个字符数组,即可以指定要获取的列,上边的例子中,只指定了一列,即获取某一列的不重复的信息。

ToDataTable(string tableName,bool distinct,parm string[] columnNames);功能如上,只不过多了一个DataTableName

时间: 2024-10-12 01:02:45

DataTable中如何去除重复的项【转】的相关文章

PHP二维数组去重的方法(保留各个键值的同时去除重复的项)-- 二维数组的唯一性

对于如下二维数组,要求对其进行去重: $arr = array( '0'=>array( 'name'=>'james', 'age'=>30, ), '1'=>array( 'name'=>'susu', 'age'=>26, ), '2'=>array( 'name'=>'james', 'age'=>30, ), 'new'=>array( 'name'=>'kube', 'age'=>37, ), 'list'=>arr

TreeSet中不能去除重复元素。。。。。。。。。。。。。。

import java.util.Comparator;import java.util.Set;import java.util.TreeSet; /** * TreeSet如果是存String,默认会按照字母排序 * */public class Demo01 { public static void main(String[] args) { // TODO Auto-generated method stub //在一个集合中存储了无序并且重复的字符串,让其有序(字典顺序),而且还不能去

sql中去除重复的项

方法一:group by  (取最小的id)select min(id) id,T from Table_1 group by T 方法二:union (不需要id)select T from Table_1 where 1=0unionselect T from Table_1 方法三:DISTINCT select  DISTINCT T from Table_1

JavaScript中数组去除重复

方式一:常规模式 1.构建一个新的临时数组存放结果 2.for循环中每次从原数组中取出一个元素,用这个元素循环与临时数组对比 3.若临时数组中没有该元素,则存到临时数组中 方式二:使用了默认Js数组sort默认排序,是按ASCII进行排序: 若要按照升降序的排列如下:<控制台打印输出> 1.先将当前数组进行排序 2.检查当前中的第i个元素 与 临时数组中的最后一个元素是否相同,因为已经排序,所以重复元素会在相邻位置 3.如果不相同,则将该元素存入结果数组中 方式三:<推荐>利用js

HashSet中如何去除重复的对象

通过查看java底层api实现可以发现在hashset中比较2个值是否相等,他是比较的hash值和equals方法,所以我们只需要重写这2个方法即可. 实例程序: package com; import java.util.HashSet; import java.util.Set;   public class SetDemo {           public static void main(String[] args) {                 User user0 = ne

从一个未排序的链表中移除重复项

问题 从一个未排序的链表中移除重复的项? 附, 如果不允许使用临时的缓存,你如何解决这个问题? 分析 如果可以使用额外的存储空间,我们就开一个数组来保存一个元素的出现情况. 对于这种情况,最好的解决方法当然是使用哈希表,但令人非常不爽的是C++标准里是没有 哈希表的(java里有).网上有人用ext下的hash_map,但毕竟不是C++标准里的, 用起来怪怪的,搞不好换个环境就跑不起来了(像Linux和Windows下使用就不一样). 所以,一般用一个数组模拟一下就好了.但,这里要注意一个问题,

[LeetCode] Remove Duplicates from Sorted Array 有序数组中去除重复项

Given a sorted array, remove the duplicates in place such that each element appear only once and return the new length. Do not allocate extra space for another array, you must do this in place with constant memory. For example,Given input array A = [

[LeetCode] Remove Duplicates from Sorted Array II 有序数组中去除重复项之二

Follow up for "Remove Duplicates":What if duplicates are allowed at most twice? For example,Given sorted array A = [1,1,1,2,2,3], Your function should return length = 5, and A is now [1,1,2,2,3]. 这道题是之前那道Remove Duplicates from Sorted Array 有序数组中

一些常用的方法(1)--去除DataTable中的重复数据

private DataTable Display(DataTable dtSource)        {            DataTable dtTemp = dtSource.Copy();            foreach (DataRow dr in dtSource.Rows)            {                DataRow[] drRepeat = dtTemp.Select("AA='" + dr["AA"].ToS