获取与排序顺序中的筛选器以及指定的状态相匹配的所有 DataRow 对象的数组。
[Visual Basic]
Overloads Public Function Select( _
   ByVal filterExpression As String, _
   ByVal sort As String, _
   ByVal recordStates As DataViewRowState _
) As DataRow()
[C#]
public DataRow[] Select(
   string filterExpression,
   string sort,
   DataViewRowState recordStates
);
[C++]
public: DataRow* Select(
   String* filterExpression,
   String* sort,
   DataViewRowState recordStates
) [];
[JScript]
public function Select(
   filterExpression : String,
   sort : String,
   recordStates : DataViewRowState
) : DataRow[];
参数
filterExpression 
要用来筛选行的条件。 
sort 
一个字符串,它指定列和排序方向。 
recordStates 
DataViewRowState 值之一。 
返回值
DataRow 对象的数组。
备注
若要形成 filterExpression 参数,请使用与创建 DataColumn 类的 Expression 属性值相同的规则。Sort 参数也使用与创建类的 Expression 字符串相同的规则。
示例
[Visual Basic, C#] 以下示例使用筛选表达式和记录状态来返回 DataRow 对象的数组。
[Visual Basic] 
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 SubPrivate 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();
    }
}