Ну, это все о DataTable.
Общая фильтрация
Вы можете справиться с этим, изменив процедуру SQL / store / etc, которую вы используете для загрузки данных в DataTable, или (и будьте осторожны здесь), загрузив все данных и затем используя ADO.Net встроенные возможности фильтрации.
В последнем случае на ум приходит DataTable.Select ( Статья о DataTable.Select и фильтрация в ADO.Net ).
Искать в Particlar
Однако в контексте поиска лучше всего выполнять работу в базе данных, то есть в вашем SQL. В противном случае вы должны извлекать все данные по сети каждый раз, когда происходит поиск, и затем фильтровать их на клиенте. Если ваш стол всегда будет очень маленьким, это очень реальная проблема производительности. И даже тогда он пахнет довольно плохо, потому что, если он достаточно велик для поиска, вы уже имеете дело с типом таблицы, которая может расти.
Гораздо лучше загрузить именно то, что вам нужно. Это может привести к некоторым раздражающим хранимым процедурам. Это одна из проблем, где инструменты ORM действительно блестят, потому что они позволяют легко выполнять очень динамические запросы без необходимости возиться с большими sprocs с необязательными параметрами и т. Д.
Надеюсь, это поможет!