是否可以使用 LINQ 查询来接收突出显示的单元格的值?在下图中,我只能对 DatGridView 中突出显示的单元格进行计数,并将计数值传递到列表框中。
var foundColor = dataGridView1.Rows.Cast<DataGridViewRow>().Select(row => new
{
Count = row.Cells.Cast<DataGridViewCell>().Count(c => c.Style.BackColor == Color.Yellow),
Name = row.Cells.Cast<DataGridViewCell>().Where(x => x.Style.BackColor == Color.Yellow)
}).ToList();
foundColor.ForEach(s => listBox3.Items.Add($"{s.Count},{s.Name}"));
Run Code Online (Sandbox Code Playgroud)

您可以使用 SelectMany 创建单元格的平面列表。
dataGridView1.Rows.Cast<DataGridViewRow>().SelectMany(row => row.Cells.Cast<DataGridViewCell>())
Run Code Online (Sandbox Code Playgroud)
现在您有了一个 IEnumerable,您可以使用 Count、Where、或 Select 单元格的值。
计数和选择不能在同一迭代中执行。那将是两个查询。
但是,就性能而言,将结果放入数组或列表中并获取该列表的长度将是更好的主意。
var list = dataGridView1.Rows.Cast<DataGridViewRow>()
.SelectMany(row => row.Cells.Cast<DataGridViewCell>())
.Where(x => x.Style.BackColor == Color.Yellow)
.Select(cell => cell.Value)
.ToList();
int count = list.Count;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3227 次 |
| 最近记录: |