繁体   English   中英

如何使用 LINQ 获取 DataGridView 单元格值

[英]How to use LINQ to get DataGridView cell Value

是否有可能使用 LINQ 查询来接收突出显示的单元格的值? 在下图中,我只能对 DatGridView 中突出显示的单元格进行计数,并将计数值传递到 listBox 中。

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}"));

DataGridView 示例

您可以使用 SelectMany 创建单元格的平面列表。

dataGridView1.Rows.Cast<DataGridViewRow>().SelectMany(row => row.Cells.Cast<DataGridViewCell>())

现在你有了一个IEnumerable,你可以使用Count,或者Where,或者Select这个单元格的Value。

Count 和 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;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM