Столбцы DataGridView уже поддерживают сортировку.
Я бы заполнил DataTable вашими данными и затем связал бы DataGridView с myDataTable.DefaultView.
Вы можете отфильтровать отображаемые строки, установив myDataTable.DefaultView.RowFilter.
Вы можете разместить текстовые поля и / или комбинированные списки над DataGridView и обновить myDataTable.DefaultView.RowFilter при изменении ввода / выбора.