我熟悉dataTable中的行过滤,使用DataView .

我想过滤一个datagridview,它有一个基于字典值的数据源 . 所以,没有转换为数据表 .

dataGridView1.DataSource = _someDict.values.where(what you need).ToList();

对于过滤我想使用这样的东西:Filter DataGridView(萨米回答)或Filtering DataGridView without changing datasource(Brad Bruce和Joe Sisk的回答)

将数据源转换为dataTable,如:

var dt = (dataGridView1.DataSource as DataTable);

返回null .

所以我尝试使用bindingSource .

_bindingSource.DataSource = _someDict.values.where(what you need).ToList();
dataGridView1.DataSource = _bindingSource;

DataGridView使用正确的数据填充 . 但是,当我尝试像这样过滤:

_bindingSource.Filter= "MyColumn like '%" + textBox1.Text + "%'";

行未被过滤,我仍然可以看到所有行 . 甚至在dataGridView1.DataSource = _bindingSource之后; dataGridView1.Refresh();

有什么建议?我知道如何从列表中创建数据表(我有一个扩展名),但我更喜欢将字典值绑定到bindingSource或dataGridView . 亲切的问候,

Matthijs