Friday, January 18, 2013

## 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];
}
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..

Share:

1. linq is best for this :)

2. Yes I agree with Aryan

3. 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

4. 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

5. @disqus_dm6TrEz5D2:disqus - Thanks for mentioning

6. @Aryan- I agree with you.

7. Previously i use to code using clone in the application, now its better to go for Linq. Ravi has mentioned a good point