是否可以使DataGridViewRow.Cells支持Any或All等方法?

时间:2015-01-29 23:42:16

标签: c# datagridview lambda

说,我想检查来自Cell的{​​{1}}中的Value null Row是否为DataGridViewforeach有效。

        foreach (DataGridViewCell c in row.Cells)
        { 
            if (c.Value == null)
            {
                e.Cancel = true;
                MessageBox.Show("empty cell");
            }
        }

我尝试使用方法Any来替换foreach,但没有编译:

        if(row.Cells.Any(c => c.Value == null))
        {
            e.Cancel = true;
            MessageBox.Show("empty cell");
        }

是否有支持方法Any

1 个答案:

答案 0 :(得分:2)

你必须施展它们:

if (row.Cells.Cast<DataGridViewCell>().Any(c => c.Value == null)) {
  // code...
}

DataGridViewCellCollection未指定泛型类型,因此需要强制转换。见Enumerable.Cast<TResult> Method

  

Cast(IEnumerable)方法允许通过提供必要的类型信息在非泛型集合上调用标准查询运算符。例如,ArrayList不实现IEnumerable,但通过在ArrayList对象上调用Cast(IEnumerable),可以使用标准查询运算符来查询序列。