using LINQ retrieve top N rows
Normally to return top N rows we use an SQL statement
similar to the one belowSelect top N * from table
but How can we achieve the same thing in DataTableI have seen many examples, using different methods. Most
of the methods centered around the idea of creating new
columns with automatic values increment and using them as
index
There is better method using LINQ
public DataTable GetTopNFromDataTable(int TopRowCount, DataTable dtSource)
{
var dtTrec = from item in dtSource.AsEnumerable()
select item;
var topN = dtTrec.Take(TopRowCount);
DataTable dtNew = new DataTable();
dtNew = dtSource.Clone();
foreach (DataRow drrow in topN.ToArray())
{
dtNew.ImportRow(drrow);
}
return dtNew;
}
var dtTrec - stores the item in datatable, Using the Take
function of Linq the first N rows is filtered
var topN = dtTrec.Take(TopRowCount);
Now how to retrieve the rows between N1 & N2,
just use the skip function along with Take as shown
below
public
DataTable
GetTopBetweenFromDataTable(int
intFrom, int
intTo, DataTable
dtSource)
{...... var
topN = dtTrec.Skip(intFrom).Take(intFrom); ......}