根据单元格的内容删除列

时间:2017-01-18 18:05:47

标签: c# winforms datagridview

我需要根据特定条件删除DataGridView中的整个列。我的DataGridView列由数字(1,2和3)组成,条件是删除所有不包含(1,2和3)的列。例如,如果列只有(1和3),则应删除它。

我如何克服这个?当你确定下面的索引时,我经历过的很多线程都会被覆盖。

myGridView.columns.RemoveAt(index);

有人建议隐藏列而不是我想要的,我想从DataGridView中完全删除列。

1 个答案:

答案 0 :(得分:1)

虽然使用DataGridView的数据源完成工作会更好,但如果控件未绑定到数据源,您还可以使用linq从列中获取值并检查一些标准,例如:

dgv1.Columns.Cast<DataGridViewColumn>()
    .ToList().ForEach(c =>
    {
        var values = dgv1.Rows.Cast<DataGridViewRow>().Where(r => !r.IsNewRow)
            .Select(r=>r.Cells[c.Index].Value).ToList();
        if (!values.Contains(1)) //your custom criteria
            dgv1.Columns.Remove(c);
    });

这是一个非常简单的测试。以这种方式加载dgv1

dgv1.ColumnCount = 2;
dgv1.Rows.Add(1, 2); 
dgv1.Rows.Add(3, 4); 

然后使用上面的代码删除列,它只删除最后一列。

相关问题