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

作者:婉的裕 时间:2022-03-15 19:33:45 

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)

来源:https://blog.csdn.net/weixin_46836563/article/details/112183358

标签:过滤,datatable,空数据
0
投稿

猜你喜欢

  • 一篇文章弄懂JVM类加载机制过程以及原理

    2022-01-19 10:32:57
  • Android实现流光和光影移动效果代码

    2023-09-24 23:57:55
  • 详解Java递归实现树形结构的两种方式

    2023-02-18 07:24:47
  • Android DataBinding手把手入门教程

    2023-04-29 18:51:24
  • Android编程开发之NotiFication用法详解

    2023-01-19 22:50:11
  • mybatis 多表关联mapper文件写法操作

    2021-12-02 23:21:25
  • JAVA实现心跳检测(长连接)

    2022-12-16 04:26:30
  • Struts2通过自定义标签实现权限控制的方法

    2021-07-19 11:06:22
  • C#实现XML与实体类之间相互转换的方法(序列化与反序列化)

    2022-05-14 03:39:32
  • C#调用Windows的API实现窗体动画

    2022-09-09 13:05:22
  • C#实现简单的字符串加密

    2022-12-28 17:09:29
  • Springboot通过run启动web应用的方法

    2021-08-30 01:57:37
  • java语言自行实现ULID过程底层原理详解

    2023-04-13 22:38:50
  • idea企业开发之新建各类型项目的详细教程

    2023-02-28 05:27:11
  • c#的时间日期操作示例分享(c#获取当前日期)

    2021-07-09 15:44:35
  • Android Studio设置或修改Android SDK路径方法

    2023-11-07 17:22:10
  • Spring创建Bean的生命周期详析

    2022-01-27 06:33:26
  • Spring @Cacheable指定失效时间实例

    2022-12-06 08:58:35
  • 解决MyBatis @param注解参数类型错误异常的问题

    2023-12-01 06:41:45
  • swagger如何返回map字段注释

    2023-02-22 08:56:27
  • asp之家 软件编程 m.aspxhome.com