Вы можете просто скрыть столбцы в сетке данных (предположим, что вы используете один)
dataGridView1.Columns["ColName"].Visible = False;
для каждого столбца, которого нет в selectedColumns
Но если вам действительно нужно отфильтровать набор данных, я помню, что вы можете сделать что-то вроде:
mydatatable.Columns.Remove("ColName");
в ваших данных ... или в копии.
Если вы собираетесь показывать столбцы в сетке данных, я могу установить свойство ColumnMapping столбца с данными, как это
mydatatable.Columns["Colname"].ColumnMapping = MappingType.Hidden;
К сожалению, меня сейчас нет дома, поэтому я не могу проверить это, но, как вы можете видеть, есть много вариантов.
РЕДАКТИРОВАТЬ: В ответ на ваш запрос, вы можете иметь дело с не выбранными столбцами, как это:
for(int i = 0;i<dt.Columns.Count;i++)
{
if(!selectedColumns.Contains(dt.Columns[i].ColumnName))
{
dt.Columns[i].ColumnMapping = MappingType.Hidden;
}
}