c# - 如何使用 LINQ 将突出显示的单元格传递给另一个 DataGridView?
问题描述
有什么方法可以使用 LINQ 样式查询将突出显示的单元格(没有 ComboBox)的值传递给另一个 DataGridView?在下图中,标记了要传输的单元格。
非常感谢您的想法!
private void Button3_Click(object sender, EventArgs e)
{
for (int i = 0; i < dataGridView2.Rows.Count; i++)
{
for(int j = 0; j < dataGridView2.Columns.Count; j++)
{
if (!(dataGridView2.Rows[i].Cells[j].Value == null))
{
var cr =
dataGridView2.Rows[i].Cells[j].Style.BackColor =
Color.Red;
var cg =
dataGridView2.Rows[i].Cells[j].Style.BackColor =
Color.LawnGreen;
dataGridView3.Rows.Add(cr);
dataGridView3.Rows.Add(cg);
}
}
}
}
解决方案
好的,这是一些使用 linq 的示例代码,它将复制单元格具有特定背景颜色的值。使用 Linq 的关键是Cast方法,它可以采用非泛型IEnumerable
并将其转换为泛型IEnumerable
,因此我们可以使用 linq 语法。它还使用Select
包含索引参数的重载,因此您可以轻松地索引到第二个数据网格以获取正确的行/列。
var linqable = dataGridView2.Rows.Cast<DataGridViewRow>().Select((r, y) => new
{
row = r,
rowNum = y,
cells = r.Cells.Cast<DataGridViewCell>().Select((a, b) =>
new
{
cell = a,
cellNum = b
})
});
foreach(var row in linqable)
{
foreach(var cellWithRed in row.cells.Where(x => x.cell.Style.BackColor == Color.Red))
{
dataGridView3.Rows[row.rowNum].Cells[cellWithRed.cellNum].Value = cellWithRed.cell.Value;
}
}
推荐阅读
- amazon-web-services - 如何监控作为微服务应用程序一部分的多个 lambda 函数?
- javascript - 反应原生图像绑定
- java - Hystrix 中的 rollingStats.timeInMilliseconds 与 healthSnapshot.intervalInMilliseconds
- c# - 是否可以在不重新编码的情况下保留用于构建 BitmapImage 的原始数据?
- arrays - Flutter:如何在 Object JSON 中获取价值?
- kubernetes - K8s如何为每个特定节点部署pod 1,而不是集群中的所有节点
- typescript - TypeScript 在泛型中扩展的奇怪类型行为
- python-3.x - 我查找列表均值的函数有什么问题?
- node.js - 如何在 mongoDB 聚合上进行嵌套分页
- asp.net-core-webapi - Microsoft 浏览器链接是否适用于 API 项目?