关于DataSet

一 、DataSet判断是否为空

1,if(ds == null) 这是判断内存中的数据集是否为空,说明DATASET为空,行和列都不存在!!
  2,if(ds.Tables[0].Count == 0) 这应该是在内存中存在一个DATASET,但是,数据集中不存在表!!
  3,if(ds.Tables[0].Count == 1 && ds.Tables[0].Rows.Count == 0) 说明存在表table,但是,表内没有数据!

if ( yourDataSet.Tables[0].Rows.Count > 0 )
{
有记录时你要做的事情
}
else
{
返回空集
}
if (DataSet1.Tables[0].Rows.Count 0)
{
Response.Write(“
”);
}
建议(yourDataSet.Tables[0].Rows.Count > 0) OR (ds.tablesnull) 应该先判断是否数据集为空(查询出错时),接着判断表中的行数是否为零(查询未出错且行数是否为零),否则容易出错,
例如:先判断myDataSet.Tables[0].Rows.Count==0时,如果查询出错时,此时myDataSet为null,也就没有table,所以会报错。
故应该这样判断
if (myDataSet == null || myDataSet.Tables[0].Rows.Count == 0)
{
//为空时进行处理
}
else
{
//不为空时处理
}
“||”(or)和“&&”(and)操作符先判断第一个条件,不满足后接着判断下一条件,但如果上面顺序调换在myDataSet为null时则会出错,即先判断大的条件,接着判断小的条件

二 、DataSet的遍历

//多表多行多列的情况
foreach   (DataTable   dt   in   YourDataset.Tables)   //遍历所有的datatable
  {  
      foreach   (DataRow   dr   in   dt.Rows)   ///遍历所有的行
          foreach   (DataColumn   dc   in   dt.Columns)   //遍历所有的列
                   Console.WriteLine({0},   {1},   {2},   dt.TableName,  dc.ColumnName,   dr[dc]);   //表名,列名,单元,数据
 }
//遍历一个表多行多列
  foreach(DataRow   mDr   in   dataSet.Tables[0].Rows   )  
  {  
       foreach(DataColumn   mDc   in   dataSet.Tables[0].Columns)  
      {  
                Console.WriteLine(mDr[mDc].ToString());    
       }  
  }
//遍历一个表多行一列
foreach(DataRow   row   in   DataSet1.Tables[0].Rows)  
  {  
            Console.WriteLine(row[0].ToString());  
  }
//一行一列
ds.Tables[0].Rows[0]["字段"]

//访问一行中的某个元素
dr.ItemArray[i].ToString()

三、DataSet 的筛选

使用 Select

// DataTable.Select(条件[和Db的Sql筛选基本相似])
DataTable dt = new DataTable();
DataRow[] drArr = dt.Select(" C1=’abc’ ");	//查询
//DataTable.Select( "ID=" + id )
//多条件,如:DataTable.Select("ID=" + id +" and name=" +name)

模糊筛选

DataRow[] drArr = dt.Select("C1 LIKE ’abc%’");
// 另一种模糊查询的方法 
DataRow[] drArr = dt.Select("’abc’ LIKE C1 + ’%’", "C2 DESC");
// 筛选后并排序
DataRow[] drArr = dt.Select("C1=’abc’", "C2 DESC");

// DataRow如何转为DataTable呢?
//		思路:DataRow赋值给新的DataTable
DataTable dtNew = dt.Clone();  
for (int i = 0; i < drArr.Length; i++)  
{  
    dtNew.ImportRow(drArr[i]); 
}

利用DataView的RowFilter 实现筛选

DataTable dataSource = new DataTable(); 
DataView dv = dataSource.DefaultView; 
dv.RowFilter = "columnA = 'abc'"; 
//1.过滤后直接获取DataTable 
DataTable newTable1 = dv.ToTable(); 
//2.设置新DataTable的TableName 
DataTable newTable2 = dv.ToTable("NewTableName"); 
//3.设置新表是否过滤重复项,拥有的列的列名以及出现的顺序 
//即可以设置新表的字段。但是字段名肯定是老表dataSource中拥有的。 
DataTable newTable3 = 
dv.ToTable(true, new string[] { "columnA,columnF,columnC" }); 
//4.综合了2.3两点。 
DataTable newTable4 = 
dv.ToTable("NewTableName", true, new string[] { "columnA,columnF,columnC" });
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值