DataTableReader.GetEnumerator メソッド
アセンブリ: System.Data (system.data.dll 内)

Dim instance As DataTableReader Dim returnValue As IEnumerator returnValue = instance.GetEnumerator
public override IEnumerator GetEnumerator ()
public: virtual IEnumerator^ GetEnumerator () override
public IEnumerator GetEnumerator ()
public override function GetEnumerator () : IEnumerator
項目のコレクションを表す IEnumerator オブジェクト。


列挙子は、DataTableReader 内のデータの読み取りだけを許可します。列挙子を使用して基になるコレクションを変更することはできません。
まず、列挙子をコレクションの最初の要素の前に配置します。この位置で Current を呼び出すと、例外がスローされます。したがって、Current の値を読み取る前に、MoveNext を呼び出して、コレクションの最初の要素に列挙子を進める必要があります。
Current は DbDataRecord を返します。MoveNext または Reset が呼び出されるまでは、同じオブジェクトを返します。MoveNext は、Current を次の要素に設定します。
コレクションの末尾を過ぎると、列挙子はコレクションの最後の要素の後ろに配置され、MoveNext を呼び出すと false が返されます。MoveNext への最後の呼び出しで false が返された場合に、Current を呼び出すと例外がスローされます。さらに、DataTableReader ではデータに対する前方向のアクセスを提供するため、IEnumerator の Reset メソッドを呼び出すと がスローされます。
DataTableReader により、安定した列挙子が得られます。つまり、基になるデータ内で行の削除や追加が発生しても、GetEnumerator を呼び出すことで返される列挙子は有効です。

GetEnumerator メソッドを使用する例を次に示します。この例では、列挙子がアクティブなときに基になる DataTable から行が削除された場合の列挙子の動作を示しています。
Sub Main() Try Dim userTable As New DataTable("peopleTable") userTable.Columns.Add("Id", GetType(Integer)) userTable.Columns.Add("Name", GetType(String)) ' Note that even if you create the DataTableReader ' before adding the rows, the enumerator can still ' visit all the rows. Dim reader As DataTableReader = userTable.CreateDataReader() userTable.Rows.Add(1, "Peter") userTable.Rows.Add(2, "Mary") userTable.Rows.Add(3, "Andy") userTable.Rows.Add(4, "Russ") Dim enumerator As IEnumerator = 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. Dim isRowDeleted As Boolean = False While (enumerator.MoveNext()) Dim dataRecord As DbDataRecord = CType(enumerator.Current, _ DbDataRecord) ' While the enumerator is active, delete a row. ' This doesn't affect the behavior of the enumerator. If Not isRowDeleted Then isRowDeleted = True userTable.Rows(2).Delete() End If Console.WriteLine(dataRecord.GetString(1)) End While Catch ex As Exception Console.WriteLine(ex) End Try Console.ReadLine() End Sub
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(); }

Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile for Pocket PC, Windows Mobile for Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


Weblioに収録されているすべての辞書からDataTableReader.GetEnumerator メソッドを検索する場合は、下記のリンクをクリックしてください。

- DataTableReader.GetEnumerator メソッドのページへのリンク