dt常用类
经常使用的一些datatable的操作,包括一些过滤去重的方法
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Data; namespace TravcomRptTest.Common
{
public abstract class Dt
{
#region 按条件过滤DataTable
public static DataTable TblFilter(DataTable sourceTable, string condition)
{
var tempDt = sourceTable.Clone();
var rows = sourceTable.Select(condition);
foreach (var dr in rows)
{
tempDt.ImportRow(dr);
}
return tempDt;
} public static DataTable TblFilter(DataTable sourceTable, string condition, string[] columns)
{
var tempDt = new DataTable();
foreach (var t in columns)
{
tempDt.Columns.Add(t, typeof(String));
}
var rows = sourceTable.Select(condition);
foreach (var dr in rows)
{
var newDr = tempDt.NewRow();
foreach (var t in columns)
{
newDr[t.Split(':')[]] = dr[t.Split(':')[]].ToString();
}
tempDt.Rows.Add(newDr);
}
return tempDt;
}
#endregion
#region 按条件过滤DataTable,并排序
public static DataTable TblFilter(DataTable sourceTable, string condition, string orderBy)
{
var tempDt = sourceTable.Clone();
var rows = sourceTable.Select(condition, orderBy);
foreach (var dr in rows)
{
tempDt.ImportRow(dr);
}
return tempDt;
}
#endregion
#region 筛选不重复的sourceColumn数据,单Column
public static DataTable TblDistinct(DataTable sourceTable, string sourceColumn)
{
try
{
var result = sourceTable.Clone();
var ht = new Hashtable();
foreach (var dr in sourceTable.Rows.Cast<DataRow>().Where(dr => !ht.ContainsKey(dr[sourceColumn])))
{
ht.Add(dr[sourceColumn], null);
var newRow = result.NewRow();
newRow.ItemArray = dr.ItemArray;
result.Rows.Add(newRow);
}
return result;
}
catch (Exception)
{
return null;
}
}
#endregion
#region 筛选不重复的sourceColumn数据,单Column,指定数据类型
public static DataTable TblDistinct(DataTable sourceTable, string sourceColumn, Type columnType)
{
var result = sourceTable.Clone();
result.TableName = "DT";
result.Columns[sourceColumn].DataType = columnType;
try
{
var ht = new Hashtable();
foreach (var dr in sourceTable.Rows.Cast<DataRow>().Where(dr => !ht.ContainsKey(dr[sourceColumn])))
{
ht.Add(dr[sourceColumn], null);
var newRow = result.NewRow();
newRow.ItemArray = dr.ItemArray;
result.Rows.Add(newRow);
}
return result;
}
catch (Exception)
{
return null;
}
}
#endregion
#region 筛选不重复的sourceColumn数据,双Column
public static DataTable TblDistinct(DataTable sourceTable, string key1, string key2)
{
try
{
var result = sourceTable.Clone();
var ht = new Hashtable();
foreach (var dr in sourceTable.Rows.Cast<DataRow>().Where(dr => !ht.ContainsKey(dr[key1] + dr[key2].ToString())))
{
ht.Add(dr[key1] + dr[key2].ToString(), null);
var newRow = result.NewRow();
newRow.ItemArray = dr.ItemArray;
result.Rows.Add(newRow);
}
return result;
}
catch (Exception)
{
return null;
}
}
#endregion
#region 筛选不重复的sourceColumn数据,多Column
public static DataTable TblDistinct(DataTable sourceTable, string[] arrKey)
{
try
{
var result = sourceTable.Clone();
var ht = new Hashtable();
foreach (DataRow dr in sourceTable.Rows)
{
var strKey = arrKey.Aggregate(string.Empty, (current, t) => current + dr[t]);
if (ht.ContainsKey(strKey)) continue;
ht.Add(strKey, null);
var newRow = result.NewRow();
newRow.ItemArray = dr.ItemArray;
result.Rows.Add(newRow);
}
return result;
}
catch (Exception)
{
return null;
}
}
#endregion
#region 获取单一值
public static string GetSingle(string columnName, string condition, DataTable dt)
{
try
{
return TblFilter(dt, condition).Rows[][columnName].ToString();
}
catch
{
return string.Empty;
}
}
//获取单一值,为空返回默认值
public static string GetSingle(string columnName, string condition, DataTable dt, string defaultValue)
{
string strReturn;
try
{
strReturn = TblFilter(dt, condition).Rows[][columnName].ToString();
}
catch
{
strReturn = string.Empty;
}
if (strReturn.Trim() == "")
{
strReturn = defaultValue;
}
return strReturn;
}
#endregion
#region 获得一个带结构的DataTable
public static DataTable GetNewTbl(string tableName)
{
var dt = new DataTable();
switch (tableName)
{ case "ConfigModel":
#region
dt.Columns.Add("Name", typeof(String));
dt.Columns.Add("id", typeof(String));
dt.Columns.Add("MI01", typeof(String));
#endregion
break;
}
return dt;
}
#endregion //public static DataTable listToTable(List<Model.Segment> segList)
//{
// DataTable dt = new DataTable();
// dt.Columns.Add("psgqueue");
// dt.Columns.Add("airqueue");
// dt.Columns.Add("ticketno");
// for (int i = 0; i < segList.Count; i++)
// {
// DataRow dr = dt.NewRow();
// dr["psgqueue"] = segList[i].psgqueue;
// dr["airqueue"] = segList[i].airQueue;
// dr["ticketno"] = segList[i].ticketno;
// dt.Rows.Add(dr);
// } // return dt;
//} }
}
dt常用类的更多相关文章
- css样式清零及常用类
css样式清零及常用类 @charset "utf-8"; /*CSS Reset*/ /*"微软雅黑","\5FAE\8F6F\96C5\9ED1& ...
- Foundation框架下的常用类:NSNumber、NSDate、NSCalendar、NSDateFormatter、NSNull、NSKeyedArchiver
========================== Foundation框架下的常用类 ========================== 一.[NSNumber] [注]像int.float.c ...
- JS面向对象(1) -- 简介,入门,系统常用类,自定义类,constructor,typeof,instanceof,对象在内存中的表现形式
相关链接: JS面向对象(1) -- 简介,入门,系统常用类,自定义类,constructor,typeof,instanceof,对象在内存中的表现形式 JS面向对象(2) -- this的使用,对 ...
- Java集合常用类特点整理
集合的结构如下图所示: 集合的两个顶级接口分别为:Collection和Map Collection下有两个比较常用的接口分别是List(列表)和Set(集),其中List可以存储重复元素,元素是有序 ...
- Java集合框架(常用类) JCF
Java集合框架(常用类) JCF 为了实现某一目的或功能而预先设计好一系列封装好的具有继承关系或实现关系类的接口: 集合的由来: 特点:元素类型可以不同,集合长度可变,空间不固定: 管理集合类和接口 ...
- java-API中的常用类,新特性之-泛型,高级For循环,可变参数
API中的常用类 System类System类包含一些有用的类字段和方法.它不能被实例化.属性和方法都是静态的. out,标准输出,默认打印在控制台上.通过和PrintStream打印流中的方法组合构 ...
- Java基础复习笔记系列 五 常用类
Java基础复习笔记系列之 常用类 1.String类介绍. 首先看类所属的包:java.lang.String类. 再看它的构造方法: 2. String s1 = “hello”: String ...
- iOS 杂笔-24(常用类到NSObject的继承列表)
iOS 杂笔-24(常用类到NSObject的继承列表) NSString NSObject->NSString NSArray NSObject->NSArray ↑OC基本类都直接继承 ...
- java的eclipse操作和常用类Object的使用
1.eclipse的快捷键: (1)alt + / 内容辅助. 如:main+alt + / 会出现完整的main方法. syso+alt+ / 会输出. 如编写某个方法时,只需写入方法名 + a ...
随机推荐
- 全面超越Appium,使用Airtest超快速开发App爬虫
想开发网页爬虫,发现被反爬了?想对 App 抓包,发现数据被加密了?不要担心,使用 Airtest 开发 App 爬虫,只要人眼能看到,你就能抓到,最快只需要2分钟,兼容 Unity3D.Cocos2 ...
- JUnit4源码学习笔记
先上一个在Spring-test下运行的调用栈 自底向上: JUnitStarter IDEA对JUnit的支持,调用JUnitCore.run(Runner),将注解@RunWith指定的Runne ...
- socket学习
对应的代码: 服务端: import socket phone = socket.socket(socket.AF_INET,socket.SOCK_STREAM) #买手机 phone.bind(( ...
- 熟悉Junit单元测试方法
定义: JUnit是一个Java语言的单元测试框架.它由Kent Beck和Erich Gamma建立,逐渐成为源于Kent Beck的sUnit的xUnit家族中最为成功的一个. JUnit有它自己 ...
- 一文让你秒懂互联网TCP/IP协议的深层含义
什么是 TCP/IP 协议 首先,协议,可以理解为是一套统一的规则,就像行业标准.由于互联网主要的功能是传输信息,所以其协议一般是管理系统之间如何相互通信的规则. 用邮政和物流等线下的“运输协议”来理 ...
- Nginx配置跨域支持功能
跨域是前端开发中经常会遇到的问题,前端调用后台服务时,通常会遇到 No 'Access-Control-Allow-Origin' header is present on the requested ...
- eos dapp开发
https://blog.csdn.net/u010665359/article/details/82906497
- 孤儿进程VS僵尸进程
我们知道在unix/linux中,正常情况下,子进程是通过父进程创建的,子进程在创建新的进程.子进程的结束和父进程的运行是一个异步过程,即父进程永远无法预测子进程 到底什么时候结束. 当一个 进程完成 ...
- java表达式中运算符优先级
运算符优先级:运算符*和/(以及%)的优先级高于+和-(优先级越高,越早运算) 在逻辑运算符中,!拥有最高优先级,之后是&&,接下来是||. 一般来说,相同优先级的运算符的运算顺序是从 ...
- hibernate多生成一个外键以及映射文件中含有<list-index>标签
(原文地址: http://blog.csdn.net/xiaoxian8023/article/details/15380529) 一.Inverse是hibernate双向关系中的基本概念.inv ...