GetEnumerator 方法

下面的示例说明 GetEnumerator 方法的用法。包括在枚举数为活动的情况下从基础 DataTable 中删除行时枚举数的行为。

view plaincopy to clipboardprint
?
public static void Main()   
{   
    
try  
    
{   
        DataTable userTable 
= new DataTable("peopleTable");   
  
        userTable.Columns.Add(
"Id"typeof(int));   
        userTable.Columns.Add(
"Name"typeof(string));   
  
        
// Note that even if you create the DataTableReader   
        
// before adding the rows, the enumerator can still   
        
// visit all the rows.   
        DataTableReader reader = userTable.CreateDataReader();   
        userTable.Rows.Add(
new object[] 1"Peter" });   
        userTable.Rows.Add(
new object[] 2"Mary" });   
        userTable.Rows.Add(
new object[] 3"Andy" });   
        userTable.Rows.Add(
new object[] 4"Russ" });   
  
        IEnumerator enumerator 
= reader.GetEnumerator();   
        
// Keep track of whether the row to be deleted   
        
// has actually been deleted yet. This allows   
        
// this sample to demonstrate that the enumerator   
        
// is able to survive row deletion.   
        bool isRowDeleted = false;   
        
while (enumerator.MoveNext())   
        
{    
            DbDataRecord dataRecord 
= (DbDataRecord)enumerator.Current;   
  
            
// While the enumerator is active, delete a row.   
            
// This doesn't affect the behavior of the enumerator.   
            if (!isRowDeleted)   
            
{   
                isRowDeleted 
= true;   
                userTable.Rows[
2].Delete();   
            }
   
            Console.WriteLine(dataRecord.GetString(
1));   
        }
   
    }
   
    
catch (Exception ex)   
    
{   
        Console.WriteLine(ex);   
    }
   
    Console.ReadLine();   
posted @ 2007-08-11 13:43  过河卒A  阅读(3172)  评论(0编辑  收藏  举报