DataTable中如何去除重复的项 (获得某个字段中的不重复项)
就是获取DataTable中某一列的值,因为从数据库中检索数据时,按照2个字段进行分组,而要获得的那一列刚好在分组这两列中,所以该列的值必然有重复,于是就想到了去除重复,有了思路以后在网上看了一些方法,大都是遍历之类的,虽说功能是可以实现,但是效率太低了,最后发现了一个简单的方法,如下:
1
2
3
4
5
6
7
8
9
10
11
|
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
SQL中的Join 问题
上周在项目中遇到一个这样的问题,通过关联两个表进行数据的查询,然后按照两个字段进行分组,整个查询逻辑是没有问题的,但是查询结果总是所有的分组项的值都是一样的,而事实上查询的结果应该是不同的,而且有些分组项是没有值的,这个时候检查了一下SQL语句,发现在进行两表关联的时候是进行等值连接,也就是内连接的一种表示形式。如果想要得到想要的结果,应该是以其中的一个表为主表进行左连接或右连接的。既然讲到了这里就把SQL的各种连接再温习一遍。
这里我把连接分为三类,内连接、外连接和交叉连接。当然还有其他的分类方法,但大体上都是一样的。下面对各种连接一一进行分析。
在开始分析之前,先建两个临时的表作为演示示例。
1
2
3
4
5
6
7
8
9
10
11
12
|
create table #T1(id int , name varchar(20)) create table #T2(rootid int , value int ) insert into #T1 values(116, 'Olive' ) insert into #T1 values(224, 'Only' ) insert into #T1 values(336, 'For' ) insert into #T1 values(448, 'You' ) insert into #T1 values(1115, 'Love' ) insert into #T2 values(116,1) insert into #T2 values(224,3) insert into #T2 values(336,1) insert into #T2 values(448,4) insert into #T2 values(1165,24) |
DataTable中如何去除重复的项 (获得某个字段中的不重复项)的更多相关文章
- spring data mongodb中,如果对象中的属性不想加入到数据库字段中
spring data mongodb中,如果对象中的属性不想加入到数据库字段中,可加@Transient注解,声明为透明属性 spring data mongodb 官网帮助文档 http://ww ...
- Oracle判断字段中是否包含中文(若有,取出该中文的方法)
一.问题说明 在处理数据的时候,需要判断某个字段字符串中是否有中文,若有则取出中文. 二.解决办法 首先如何判断某个字段字符串中是否有中文.这里介绍三种方法: 1.采用ASCIISTR函数 说明:AS ...
- mysql 允许在唯一索引的字段中出现多个null值
线上问题:org.springframework.dao.DuplicateKeyException: PreparedStatementCallback; SQL [update fl_table ...
- DataTable中如何去除重复的项【转】
上周在项目中遇到一个问题,就是获取DataTable中某一列的值,因为从数据库中检索数据时,按照2个字段进行分组,而要获得的那一列刚好在分组这两列中,所以该列的值必然有重复,于是就想到了去除重复,有了 ...
- ARCGIS中怎么去除重复的面?(转)
ARCGIS中怎么去除重复的面? https://blog.csdn.net/gswwldp/article/details/66974522 第一种: 1.用polygon to line将面转 ...
- JavaScript中数组去除重复
方式一:常规模式 1.构建一个新的临时数组存放结果 2.for循环中每次从原数组中取出一个元素,用这个元素循环与临时数组对比 3.若临时数组中没有该元素,则存到临时数组中 //方式一: Array.p ...
- mysql去重, 把url重复且区为空的中去掉、统计重复数据、、结果集去重合并成一行
delete from 表名 where id not in (select d.id from (SELECT id FROM 表名 GROUP BY c1,c2,c3,c4)as d) #去重复, ...
- paper 127:机器学习中的范数规则化之(二)核范数与规则项参数选择
机器学习中的范数规则化之(二)核范数与规则项参数选择 zouxy09@qq.com http://blog.csdn.net/zouxy09 上一篇博文,我们聊到了L0,L1和L2范数,这篇我们絮叨絮 ...
- 3.键盘输入10个数,放到数组中,(1)去除该数组中大于10的数 (2)将该数组中的数字写入到本地文件number.txt中
package cn.it.text; import java.io.FileWriter; import java.io.IOException; import java.util.Scanner; ...
随机推荐
- 数据:ContentResolver类
ContentResolver是通过URI来查询ContentProvider中提供的数据.除了URI以 外,还必须知道需要获取的数据段的名称,以及此数据段的数据类型. 如果你需要获取一个特定的记 ...
- python学习之路(24)
访问限制 在Class内部,可以有属性和方法,而外部代码可以通过直接调用实例变量的方法来操作数据,这样,就隐藏了内部的复杂逻辑. 但是,从前面Student类的定义来看,外部代码还是可以自由地修改一个 ...
- python相关遗漏知识点补充
python中的相关帮助命令 假设s是一个字符串, 那么dir(s)可以列出字符串对象的所有属性(方法也是函数属性),其中有下划线的部分与类重 载有关,用来表示python实现细节,没有下划线的属性是 ...
- 《Effective Java》读书笔记 - 11.序列化
Chapter 11 Serialization Item 74: Implement Serializable judiciously 让一个类的实例可以被序列化不仅仅是在类的声明中加上" ...
- Visual Studio 2019 企业版 注册码 百度云下载
微软官网下载地址:https://visualstudio.microsoft.com/zh-hans/downloads/ Key: Visual Studio 2019 Enterprise 企业 ...
- C# 读取Excel中的数据到DataTable中
原文地址:http://www.open-open.com/code/view/1420029490093 public DataTable ExcelToDS(string Path) { stri ...
- CentOS7--删除virbr0
https://blog.csdn.net/aienjoy/article/details/78994128
- VLC for Android编译
编译环境是ubuntu 64bit 全程参考https://wiki.videolan.org/AndroidCompile/ 一:环境准备 1.安装系统 尽量使用最新的ubuntu系统 可以省去很多 ...
- Failed to find data source: kafka
缺少包,在spark-submit 中指定 packages 如下: --packages org.apache.spark:spark-sql-kafka-0-10_2.11:2.1.0
- visudo编辑sudoers
[root@b ~ ]# visudo #编辑配置文件 相当于vim /etc/sudoers文件 root用户名(谁) ALL任何主机(哪里)=(ALL) 以什么身份(可以切换到所有用户下) a ...