📜  datagridview.rows 中的 linq (1)

📅  最后修改于: 2023-12-03 15:00:20.960000             🧑  作者: Mango

Datagridview Rows 中的 LINQ

Datagridview 是一个非常常见的控件,我们可以通过 rows 属性来访问到它的数据行。使用 LINQ 可以更加方便地进行查询和操作。

查询数据行
查询所有数据行
var rows = dataGridView1.Rows.Cast<DataGridViewRow>();

这里使用了 Cast() 方法将 DataGridViewRow 转换为 IEnumerable,使得我们可以使用 LINQ 所提供的查询方法。

条件查询
var rows = dataGridView1.Rows.Cast<DataGridViewRow>()
    .Where(row => row.Cells["ColumnName"].Value.ToString() == "Value");

这里使用了 Where() 方法来筛选满足条件的数据行,其中 row 表示每一行数据,row.Cells["ColumnName"].Value.ToString() 可以获取到指定列的值,判断其是否等于目标值即可。

操作数据行
修改数据行
dataGridView1.Rows.Cast<DataGridViewRow>()
    .Where(row => row.Cells["ColumnName"].Value.ToString() == "OldValue")
    .ToList() // 注意要先调用 ToList() 方法,否则可能会报错
    .ForEach(row => row.Cells["ColumnName"].Value = "NewValue");

这里使用了 ToList() 方法将查询结果转换成 List,以避免在后续的遍历中修改集合造成的异常。

然后使用 ForEach() 方法遍历所有满足条件的数据行,将指定列的值修改为新值。

删除数据行
dataGridView1.Rows.Cast<DataGridViewRow>()
    .Where(row => row.Cells["ColumnName"].Value.ToString() == "Value")
    .ToList()
    .ForEach(row => dataGridView1.Rows.Remove(row));

这里同样使用了 ToList() 方法,然后使用 ForEach() 方法遍历所有满足条件的数据行,将其从 Datagridview 中移除。

总结

使用 LINQ 可以在 Datagridview 中方便地进行查询和操作,使得程序员可以更加轻松地处理数据。