How to get N row from datatable in C#

Problem:


Recently one of my friend was needed only first three rows of data table and so he asked me and I have multiple solutions for that. So thought it would be great idea to share with you guys.

Possible Solutions to problem:


There are two ways to solve this problem.
  1. With normal for loop
  2. With lamda expression and linq

1. With normal for loop:

Following is code from where we can get 3 rows of data table.

private  DataTable GetFirst3RowViaFor(DataTable dataTable) {
    DataTable newDataTable = dataTable.Clone();
    for(int i=0;i<3;i++)
    {
        DataRow row = dataTable.Rows[i];
        newDataTable.Rows.Add(row);
    }
    return newDataTable;
}

Here in this way I have cloned data table structure and then I added first 3 rows of data table to new data table.

2. With lamda expression:


Following is a code for that. It’s very easy. I have used lamda expression to get first 3 rows.

private static DataTable GetFirstThreeRowViaLinq(DataTable dataTable) {
    return dataTable.Rows.Cast<System.Data.DataRow>().Take(3).CopyToDataTable();
}

That’s it. Hope you liked it. Stay tuned more updates..



6 comments:

  1. dst.Tables[0].Rows.OfType().Take(3).CopyToDataTable(). will also do the trick

    OfType - return only the elements of type x.
    Cast - will try to cast all the elements into type x. if some of them are not from this type you will getInvalidCastException

    ReplyDelete
  2. return dataTable.Rows.OfType().Take(3).CopyToDataTable(); will also do the trick.

    OfType - return only the elements of type x.
    Cast - will try to cast all the elements into type x. if some of them are not from this type you will getInvalidCastException

    ReplyDelete
  3. @disqus_dm6TrEz5D2:disqus - Thanks for mentioning

    ReplyDelete

Your feedback are very important to me. Please provide your feedback via putting comments.