Thursday, December 11, 2008
DataTable.SelectRows(n)
Doing a DataTable.Select() in ADO.NET is like using a Where clause in T-SQL, but you'd have noticed that Data table lacks a way to retrieve only specific number of rows. Well this can be easy to work around using a Top N clause in T-SQL but can be tricky in case when the data is read from different sources like XML files, Web Services etc.
Steven Smith shows a little code-snippet that can be used to work around this, so I decided to use that.
I went a step ahead and added the method to my Extension methods library as below.
public static DataTable SelectRows(this DataTable dataTable, int rowCount)
{ try {DataTable myTable = dataTable.Clone();
DataRow[] myRows = dataTable.Select();
for (int i = 0; i < rowCount; i++)
{ if (i < myRows.Length) {myTable.ImportRow(myRows[i]);
myTable.AcceptChanges();
}
}
return myTable;}
catch (Exception) {return new DataTable();
}
}
So for example it can be used as follows.
GridView.DataSource = MyDataTable.SelectRows(5);
GridView.DataBind();
Labels: ADO.NET, DataTable, Extension methods

