GetEnumerator 方法

None.gif 下面的示例说明 GetEnumerator 方法的用法。包括在枚举数为活动的情况下从基础 DataTable 中删除行时枚举数的行为。
None.gif
None.gifview plaincopy to clipboardprint
?
None.gif
public   static   void  Main()   
ExpandedBlockStart.gifContractedBlock.gif
dot.gif {   
InBlock.gif    
try  
ExpandedSubBlockStart.gifContractedSubBlock.gif    
dot.gif{   
InBlock.gif        DataTable userTable 
= new DataTable("peopleTable");   
InBlock.gif  
InBlock.gif        userTable.Columns.Add(
"Id"typeof(int));   
InBlock.gif        userTable.Columns.Add(
"Name"typeof(string));   
InBlock.gif  
InBlock.gif        
// Note that even if you create the DataTableReader   
InBlock.gif        
// before adding the rows, the enumerator can still   
InBlock.gif        
// visit all the rows.   
InBlock.gif
        DataTableReader reader = userTable.CreateDataReader();   
ExpandedSubBlockStart.gifContractedSubBlock.gif        userTable.Rows.Add(
new object[] dot.gif1"Peter" });   
ExpandedSubBlockStart.gifContractedSubBlock.gif        userTable.Rows.Add(
new object[] dot.gif2"Mary" });   
ExpandedSubBlockStart.gifContractedSubBlock.gif        userTable.Rows.Add(
new object[] dot.gif3"Andy" });   
ExpandedSubBlockStart.gifContractedSubBlock.gif        userTable.Rows.Add(
new object[] dot.gif4"Russ" });   
InBlock.gif  
InBlock.gif        IEnumerator enumerator 
= reader.GetEnumerator();   
InBlock.gif        
// Keep track of whether the row to be deleted   
InBlock.gif        
// has actually been deleted yet. This allows   
InBlock.gif        
// this sample to demonstrate that the enumerator   
InBlock.gif        
// is able to survive row deletion.   
InBlock.gif
        bool isRowDeleted = false;   
InBlock.gif        
while (enumerator.MoveNext())   
ExpandedSubBlockStart.gifContractedSubBlock.gif        
dot.gif{    
InBlock.gif            DbDataRecord dataRecord 
= (DbDataRecord)enumerator.Current;   
InBlock.gif  
InBlock.gif            
// While the enumerator is active, delete a row.   
InBlock.gif            
// This doesn't affect the behavior of the enumerator.   
InBlock.gif
            if (!isRowDeleted)   
ExpandedSubBlockStart.gifContractedSubBlock.gif            
dot.gif{   
InBlock.gif                isRowDeleted 
= true;   
InBlock.gif                userTable.Rows[
2].Delete();   
ExpandedSubBlockEnd.gif            }
   
InBlock.gif            Console.WriteLine(dataRecord.GetString(
1));   
ExpandedSubBlockEnd.gif        }
   
ExpandedSubBlockEnd.gif    }
   
InBlock.gif    
catch (Exception ex)   
ExpandedSubBlockStart.gifContractedSubBlock.gif    
dot.gif{   
InBlock.gif        Console.WriteLine(ex);   
ExpandedSubBlockEnd.gif    }
   
InBlock.gif    Console.ReadLine();   
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值