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;
添付:cxi datableはある条件によってデータをフィルタリングします。
DataTableのいずれかの列のデータが空の値であると判断する方法
DataRow類が持つ関数IsNullを使う必要があります。

if(!DataRow.IsNull(index))

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

DataReader(Sql Data Reader)には同じ機能の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の中空データと重複データをフィルタした文章を紹介します。これに関連して、より多くのCのデータと重複したデータの内容を紹介します。以前の文章を検索してください。または下記の関連記事を引き続きご覧ください。これからもよろしくお願いします。