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空数据和重复数据内容请搜索www.887551.com以前的文章或继续浏览下面的相关文章希望大家以后多多支持www.887551.com!