Click here to Skip to main content
14,365,424 members

.NET DataSet filter demonstration

Rate this:
2.20 (7 votes)
Please Sign up or sign in to vote.
2.20 (7 votes)
26 Jul 2007CPOL
This article explains how to filter rows in a DataSet/DataTable. The example provided will help you get information faster.

Screenshot - DTFilter.jpg


This article is a demonstration of filtering a DataSet/DataTable with the Select method. This article is for beginners and will help them in learning the language basics.


This is just a hobby program which I thought will be helpful for .NET beginners.

Using the code

The sample code contains only a WinForm which loads some rows with random data. I have added a ListBox with ready made filter expressions and there is a TextBox which will help you to enter user-defined filter expressions.

There is a DataTable I use in this application as a global - parent datatable. I apply filter expressions on this. This DataTable is a dynamically created one. The LoadData() method is used to fill random data into this DataTable.

DataTable dt = new DataTable();
private void Form1_Load(object sender, EventArgs e)

The LoadDate() method is shown below. Notice the usage of Random(). The same method is associated with the 'Reset Data' button.

private void LoadData()
    Random r = new Random();
    for (int i = 0; i < 10; i++)
        DataRow dr = dt.NewRow();
        dr["A"] = r.Next(0, 1000);
        dr["B"] = r.Next(0, 1000);

    dataGridView1.DataSource = dt;

Next is the most important method in this application. This is the method which gives 'life' to this application: the DoFilter() method. You can pass the filter expression as a string to this method and the effect can be seen on the DataGridView attached.

private void DoFilter(string filter)
    DataTable dt1 = dt.Clone();
        foreach (DataRow dr in dt.Select(filter))
        dataGridView1.DataSource = dt1;
    // Warning: Non-standard! - without proper catching of exception

        MessageBox.Show("Error in filter expression");

If you give an invalid filter expression, the application will show an 'Error in filter expression' message. You may have noticed the dt.Select(filter) in the above code. As you know, this is the key of this article which does the filtering job. Since dt.Select() returns an array of DataRows, I used a temporary table with the same structure (dt.Clone()) to import the filtered results and bind it to DataGridView.

Generic method

Here is a generic method overview for your projects. Please do not use this as it is since I wrote this function/method as a part of writing this article and it is not properly tested.

private DataTable DoDataTableFilter(DataTable dt, string filter)
    DataTable dt1 = dt.Clone();
    foreach (DataRow dr in dt.Select(filter))
    return dt1;

Points of interest

Note that since this is a very simple and quickly-made application, I did not do proper exception handling and object disposals. Standard code always must follow proper coding standards.

Happy coding.


This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


About the Author

Praveen Nair (NinethSense)
India India
Praveen.V.Nair - aka NinethSense - PMP, Microsoft MVP - is working as a Head of Technology and Architecture at Orion India Systems, Kochi, India. He has been playing with electronics from the age of 10 and with computers from the age of 14. He usually blogs at

Comments and Discussions

GeneralMy vote of 1 Pin
Syed Javed8-Jul-11 23:21
memberSyed Javed8-Jul-11 23:21 
GeneralGood! Pin
Sunvory29-Dec-09 19:40
memberSunvory29-Dec-09 19:40 
GeneralSimple but of Great Use Pin
Sandeepan24-Aug-07 0:15
memberSandeepan24-Aug-07 0:15 
QuestionWhy not use a DataView? Pin
David Hay30-Jul-07 21:43
memberDavid Hay30-Jul-07 21:43 
AnswerRe: Why not use a DataView? Pin
Praveen Nair (NinethSense)30-Jul-07 22:45
memberPraveen Nair (NinethSense)30-Jul-07 22:45 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.

Posted 26 Jul 2007


16 bookmarked