DataTable.Select Method
필터 조건 및 지정된 상태와 일치하는 모든 DataRow 개체의 배열을 정렬 순서대로 가져옵니다.
[C#]
public DataRow[] Select(
string filterExpression, // 행을 필터링하기 위해 사용하는 조건입니다.
string sort, // 열과 정렬 방향을 지정하는 문자열입니다.
DataViewRowState recordStates //DataViewRowState 값 중 하나로 DataRow의 버전.
);
* 반환값 : DataRow 개체로 이루어진 배열입니다.
* 행을 필터링하기 위한 조건식은 DataColumn 클래스의 Expression 속성을 참조하십시오.
private static void GetRowsByFilter()
{
DataTable customerTable = new DataTable( "Customers" );
customerTable.Columns.Add( "id", typeof(int) );
customerTable.Columns.Add( "name", typeof(string) );
customerTable.Columns[ "id" ].Unique = true;
customerTable.PrimaryKey = new DataColumn[] { customerTable.Columns["id"] };
for( int id=1; id<=10; id++ )
{
customerTable.Rows.Add(
new object[] { id, string.Format("customer{0}", id) } );
}
customerTable.AcceptChanges();
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 );
// id>5 조건에 맞는 행만 찾아서 name컬럼을 내림차순으로 정렬하여 가져온다.
PrintRows( foundRows, "filtered rows" );
foundRows = customerTable.Select(); //DataTable의 모든 행을 가져온다.
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();
}
}