C#过滤DataTable中空数据和重复数据的示例代码

C#过滤DataTable中的空数据和重复数据

string sql = "select name,age from user";
DataTable data = DB.ExecuteDataTable(string.Format(sql)); //得到DataTable

// ------------start 去重-------------------
string[] distinctcols = new string[(data.Columns.Count)];
foreach (DataColumn dc in data.Columns)
{
 distinctcols[dc.Ordinal] = dc.ColumnName;
}
DataView mydataview = new DataView(data);
DataTable data1 = mydataview.ToTable(true, distinctcols);
// ------------end  -------------------

// ------------start 去null-------------------
DataTable data2 = data1.Clone();//克隆表
foreach (DataRow drItem in data1.Rows)
{
	//过滤,判断条件的下标自己控制
 if (!string.IsNullOrWhiteSpace(drItem[0].ToString()) && !string.IsNullOrWhiteSpace(drItem[1].ToString()))
 {
  data2.Rows.Add(drItem.ItemArray);
 }
}
// ------------end-------------------

/**
下面没啥用,增加一行空白行,搜索的时候当全部搜索用
*/
DataRow row = data2.NewRow();
data2.Rows.InsertAt(row, 0);
return data2;

附:c# datatable根据某个条件过滤数据

判断DataTable中某一行某列的数据为空值的办法

需要使用DataRow类自带的一个函数IsNull。

if(!DataRow.IsNull(index))

if(Convert.IsDBNull(Row.ItemArray[index]))

在DataReader(如SqlDataReader)有相同功能的IsDBNull函数

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(':')[0]] = dr[t.Split(':')[0]].ToString();
        }
        tempDt.Rows.Add(newDr);
      }
      return tempDt;
    }

sql语句中left,right函数取字段的左或者右几位数字

LEFT(shopid,4)

总结

到此这篇关于C#过滤DataTable中空数据和重复数据的文章就介绍到这了,更多相关C#过滤DataTable空数据和重复数据内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • C#操作DataTable方法实现过滤、取前N条数据及获取指定列数据列表的方法

    本文实例讲述了C#操作DataTable方法实现过滤.取前N条数据及获取指定列数据列表的方法.分享给大家供大家参考.具体分析如下: #region DataTable筛选,排序返回符合条件行组成的新DataTable或直接用DefaultView按条件返回 /// <summary> /// DataTable筛选,排序返回符合条件行组成的新DataTable ///或直接用DefaultView按条件返回 /// eg:SortExprDataTable(dt,"Sex='男'&q

  • C#过滤DataTable中空数据和重复数据的示例代码

    C#过滤DataTable中的空数据和重复数据 string sql = "select name,age from user"; DataTable data = DB.ExecuteDataTable(string.Format(sql)); //得到DataTable // ------------start 去重------------------- string[] distinctcols = new string[(data.Columns.Count)]; foreac

  • SQL Server数据库删除数据集中重复数据实例讲解

    SQL Server数据库操作中,有时对于表中的结果集,满足一定规则我们则认为是重复数据,而这些重复数据需要删除.如何删除呢?本文我们通过一个例子来加以说明. 例子如下: 如下只要companyName,invoiceNumber,customerNumber三者都相同,我们则认为是重复数据,下面的例子演示了如何删除. declare @InvoiceListMaster table ( ID int identity primary key , companyName Nchar(20), i

  • Qt实现数据导出到xls的示例代码

    目录 一.前言 二.功能特点 三.体验地址 四.效果图 五.相关代码 一.前言 导入导出数据到csv由于语法简单,适用场景有限,于是乎还是必须再造一个轮子导出数据到xls,在经历过数十年的项目实战经验中不断调整和优化.尤其记得当初第一个版本v0.01大概在2011年左右完成的,当时是公司项目运行在嵌入式板子上,需要导出警情记录,拷贝到电脑上打印,由于嵌入式根本没有也不可能去安装excel等软件,硬着头皮去研究了xml格式的xls文件,按照那个规则组合成简单的导出数据,这个思路想法理论上比QtXl

  • mongodb 数据生成Insert 语句的示例代码

    执行: db.getCollection('cap.published').find({}).forEach(function(item){     print( 'db.getCollection("cap.published").insert(' + tojson(item) + ');' ); }); 返回结果: db.getCollection("cap.published").insert({ "_id" : NumberLong(&q

  • Springboot+AOP实现返回数据提示语国际化的示例代码

    前言 本篇内容: 提示语的国际化返回,自定义多语言. 本文使用aop方式,拦截接口返回的数据,进行转换. 正文 先看这次示例教学的项目 目录结构: (当然resource里面的i18n文件夹和三个properties文件也是要我们自己建的,但是 那个Resource Bundle 不用管,这个在yml加上对应配置项自动生成的. 不清楚的继续往下看教学就好) 开始敲(CV)代码: pom.xml 依赖: <dependencies> <dependency> <groupId&

  • Qt实现边加载数据边显示页面的示例代码

    目录 1.定义显示定时器 1:定义定时器 2:定时器调用 3:定时器加载数据 2.线程加载数据 3.实时呈现加载进度 做过C++开发的人们都知道,无论是MFC框架还是QT框架,实现加载数据的等待效果都是很麻烦的,不像WEB端轻轻松松一句代码就搞定了.而我们这些做C++的,最常用的方法就是开线程了. 刚开始,我也是采用的开线程的方式,但是,想象总是与事实相悖的. 假设页面展示的数据比较多,导致加载页面时间较长,用户体验度很差,点击了触发按钮之后很长时间才会有响应,总让人误会程序死机了,但真正的原因

  • 小程序中实现excel数据的批量导入的示例代码

    目录 1 建立数据源 2 编制入库的代码 2.1 创建低码方法 2.2 低码中调用连接器 3 最终的代码 4 总结 我们上一篇介绍了如何利用微搭的自定义连接器接入腾讯文档的数据,光有接入是不够的,更重要的是我们需要将采集的数据积累下来,变成企业的数字资产. 积累数据最好的方式就是把数据存入数据库,低码工具除了有可视化编程的便利外,还提供了线上的文档型数据库.文档数据库比传统数据库的优势是,文档数据库的返回结构是JSON格式,直接就可以在前端进行渲染.关系型数据库还得通过代码进行转译. 另外一个方

  • Python实现删除重复文件的示例代码

    此程序主要是针对某个目录下的全部文件进行筛选,会删除重复的文件. 原理很简单,会计算每个文件的哈希,将哈希存入一个字典,文件名对应哈希. import os import hashlib def hash_file(filename): """Return the SHA-1 hash of the file content.""" h = hashlib.sha1() with open(filename, 'rb') as f: while

  • jQuery将多条数据插入模态框的示例代码

    //Bootstrap模态框(局部) <div class="modal fade" id="orderDetail"> <div class="modal-dialog"> <div class="modal-content"> <div class="modal-header"> </div> <div class="modal

  • springmvc实现导出数据信息为excle表格示例代码

    1.项目增加导出日志信息 2.项目中导入poi-*.jar等操作excel文件的jar文件 poi-3.7-20120326.jar poi-excelant-3.7-20101029.jar poi-ooxml-3.7.jar poi-ooxml-schemas-3.7.jar Excel导出就是根据前台条件将参数传到controller,根据参数去数据库中进行查询,查询出list集合,将list集合生成excle数据下载. 代码片段: Contorller.Java /** * 导出信息 *

随机推荐