次の方法で共有


DataTable.Select メソッド

DataRow オブジェクトの配列を取得します。

オーバーロードの一覧

すべての DataRow オブジェクトの配列を取得します。

.NET Compact Framework でもサポート。

[Visual Basic] Overloads Public Function Select() As DataRow()

[C#] public DataRow[] Select();

[C++] public: DataRow* Select() [];

[JScript] public function Select() : DataRow[];

フィルタ基準と一致するすべての DataRow オブジェクトを主キーの順に (主キーがない場合は追加された順に) 配列として取得します。

.NET Compact Framework でもサポート。

[Visual Basic] Overloads Public Function Select(String) As DataRow()

[C#] public DataRow[] Select(string);

[C++] public: DataRow* Select(String*) [];

[JScript] public function Select(String) : DataRow[];

フィルタ基準と一致するすべての DataRow オブジェクトの配列を、指定した並べ替え順で取得します。

.NET Compact Framework でもサポート。

[Visual Basic] Overloads Public Function Select(String, String) As DataRow()

[C#] public DataRow[] Select(string, string);

[C++] public: DataRow* Select(String*, String*) [];

[JScript] public function Select(String, String) : DataRow[];

フィルタ基準と一致するすべての DataRow オブジェクトの配列を、指定した状態と一致する並べ替え順に取得します。

.NET Compact Framework でもサポート。

[Visual Basic] Overloads Public Function Select(String, String, DataViewRowState) As DataRow()

[C#] public DataRow[] Select(string, string, DataViewRowState);

[C++] public: DataRow* Select(String*, String*, DataViewRowState) [];

[JScript] public function Select(String, String, DataViewRowState) : DataRow[];

使用例

[Visual Basic, C#, C++] フィルタ式とレコードの状態を使用して、 DataRow オブジェクトの配列を返す例を次に示します。

[Visual Basic, C#, C++] メモ   ここでは、Select のオーバーロード形式のうちの 1 つだけについて、使用例を示します。その他の例については、各オーバーロード形式のトピックを参照してください。

 
Private Sub GetRowsByFilter()
    
    Dim customerTable As DataTable
    customerTable = new DataTable( "Customers" )

    ' Add columns
    customerTable.Columns.Add( "id", GetType(Integer) )
    customerTable.Columns.Add( "name", GetType(String) )

    ' Set PrimaryKey
    customerTable.Columns("id").Unique = true
    customerTable.PrimaryKey = new DataColumn() { customerTable.Columns("id") }

    ' add ten rows
    Dim id As Integer
    For id = 1 To 10
        customerTable.Rows.Add( _
            new object() { id, string.Format("customer{0}", id) } )
    Next id
    customerTable.AcceptChanges()

    ' add another ten rows
    For id = 11 To 20
        customerTable.Rows.Add( _
            new object() { id, string.Format("customer{0}", id) } )
    Next id

    Dim strExpr As String
    Dim strSort As String
    
    strExpr = "id > 5"
    ' Sort descending by CompanyName column.
    strSort = "name DESC"
    ' Use the Select method to find all rows matching the filter.
    Dim foundRows As DataRow() = _
        customerTable.Select( strExpr, strSort, DataViewRowState.Added )
    
    PrintRows( foundRows, "filtered rows")

    foundRows = customerTable.Select()
    PrintRows( foundRows, "all rows")
End Sub

Private Sub PrintRows( rows() As DataRow, label As String)
    Console.WriteLine( "\n{0}", label )
    If rows.Length <= 0 Then
        Console.WriteLine( "no rows found" )
        Exit Sub
    End If
    Dim r As DataRow
    Dim c As DataColumn
    For Each r In rows
        For Each c In r.Table.Columns
            Console.Write( "\t {0}", r(c) )
        Next c
        Console.WriteLine()
    Next r
End Sub

[C#] 
private static void GetRowsByFilter()
{
    
    DataTable customerTable = new DataTable( "Customers" );
    // Add columns
    customerTable.Columns.Add( "id", typeof(int) );
    customerTable.Columns.Add( "name", typeof(string) );

    // Set PrimaryKey
    customerTable.Columns[ "id" ].Unique = true;
    customerTable.PrimaryKey = new DataColumn[] { customerTable.Columns["id"] };

    // Add ten rows
    for( int id=1; id<=10; id++ )
    {
        customerTable.Rows.Add( 
            new object[] { id, string.Format("customer{0}", id) } );
    }
    customerTable.AcceptChanges();

    // Add another ten rows
    for( int id=11; id<=20; id++ )
    {
        customerTable.Rows.Add( 
            new object[] { id, string.Format("customer{0}", id) } );
    }

    string strExpr;
    string strSort;
    
    strExpr = "id > 5";
    // Sort descending by column named CompanyName.
    strSort = "name DESC";
    // Use the Select method to find all rows matching the filter.
    DataRow[] foundRows = 
        customerTable.Select( strExpr, strSort, DataViewRowState.Added );
    
    PrintRows( foundRows, "filtered rows" );

    foundRows = customerTable.Select();
    PrintRows( foundRows, "all rows" );
}

private static void PrintRows( DataRow[] rows, string label )
{
    Console.WriteLine( "\n{0}", label );
    if( rows.Length <= 0 )
    {
        Console.WriteLine( "no rows found" );
        return;
    }
    foreach( DataRow r in rows )
    {
        foreach( DataColumn c in r.Table.Columns )
        {
            Console.Write( "\t {0}", r[c] );
        }
        Console.WriteLine();
    }
}

[C++] 
private:
static void GetRowsByFilter()
{
    
    DataTable* customerTable = new DataTable( S"Customers" );
    // Add columns
    customerTable->Columns->Add( S"id", __typeof(int) );
    customerTable->Columns->Add( S"name", __typeof(String) );

    // Set PrimaryKey
    customerTable->Columns->Item[ S"id" ]->Unique = true;

    DataColumn* temp2 [] = {customerTable->Columns->Item[S"id"]};
    customerTable->PrimaryKey = temp2;

    // Add ten rows
    for( int id=1; id<=10; id++ )
    {
        Object* temp0 [] = {__box(id), String::Format(S"customer{0}", __box(id))};
        customerTable->Rows->Add( temp0 );
    }
    customerTable->AcceptChanges();

    // Add another ten rows
    for( int id=11; id<=20; id++ )
    {
        Object* temp1 [] = {__box(id), String::Format(S"customer{0}", __box(id))};
        customerTable->Rows->Add( temp1 );
    }

    String* strExpr;
    String* strSort;
    
    strExpr = S"id > 5";
    // Sort descending by column named CompanyName.
    strSort = S"name DESC";
    // Use the Select method to find all rows matching the filter.
    DataRow* foundRows[] = 
        customerTable->Select( strExpr, strSort, DataViewRowState::Added );
    
    PrintRows( foundRows, S"filtered rows" );

    foundRows = customerTable->Select();
    PrintRows( foundRows, S"all rows" );
}

static void PrintRows( DataRow* rows[], String* label )
{
    Console::WriteLine( S"\n{0}", label );
    if( rows->Length <= 0 )
    {
        Console::WriteLine( S"no rows found" );
        return;
    }
    System::Collections::IEnumerator* myEnum = rows->GetEnumerator();
    while (myEnum->MoveNext())
    {
        DataRow* r = __try_cast<DataRow*>(myEnum->Current);
        System::Collections::IEnumerator* myEnum1 = r->Table->Columns->GetEnumerator();
        while (myEnum1->MoveNext())
        {
            DataColumn* c = __try_cast<DataColumn*>(myEnum1->Current);
            Console::Write( S"\t {0}", r->Item[c] );
        }
        Console::WriteLine();
    }
}

[JScript] JScript のサンプルはありません。Visual Basic、C#、および C++ のサンプルを表示するには、このページの左上隅にある言語のフィルタ ボタン 言語のフィルタ をクリックします。

参照

DataTable クラス | DataTable メンバ | System.Data 名前空間