You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Linq筛选DataGridView中从第三列起至少2个单元格为指定值的行

纯Linq实现代码

和你原有逻辑完全等价的纯Linq写法如下:

var filteredRows = myDataGridView.Rows
    .Cast<DataGridViewRow>()
    .Where(row => row.Cells
        .Cast<DataGridViewCell>()
        .Count(x => x.ColumnIndex > 1 && x.Value != null && (int)x.Value == 10) >= 2)
    .ToList();

优化版(列数多的时候性能更好)

如果表格列数较多,不需要统计所有单元格,只要匹配到2个符合要求的单元格就可以终止当前行的遍历,写法如下:

var filteredRows = myDataGridView.Rows
    .Cast<DataGridViewRow>()
    .Where(row => row.Cells
        .Cast<DataGridViewCell>()
        .Where(x => x.ColumnIndex > 1 && x.Value != null && (int)x.Value == 10)
        .Take(2)
        .Count() >= 2)
    .ToList();

逻辑说明

两段代码都和你原有实现逻辑完全一致:

  • 先对DataGridView.Rows集合做类型转换,得到可被Linq操作的DataGridViewRow序列
  • 对每行统计第三列及之后(列索引>1)、值非空且等于10的单元格数量
  • 保留符合「单元格数量≥2」的行,最终转为List<DataGridViewRow>类型

内容的提问来源于stack exchange,提问作者r-kane

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 06:06:03