我有一些包含一些列和行的datagridview。其中一列是字符串类型(DataGridViewTextBoxColumn
)。我想迭代这个DataGridViewTextBoxColumn
的所有行来找到与特定字符串匹配的第一个元素的索引(行索引),所以我这样做:
int rowIndex = this.dataGridView1.Rows
.Cast<DataGridViewRow>()
.ToArray()
.First(row => row.Cells[this.colDesired.Index].Value == stringToSearch)
.Index;
但会引发错误。
我想使用Linq和lambdas。
答案 0 :(得分:0)
您的解决方案对我很有用。几件事情没有注意到:
ToArray
上执行Cast
。this.colDesired.Index
具有有效值。否则会引发运行时异常。DatagridViewCell.Value
的默认值将为null,因此您应该获得适当的格式化值(DatagridViewCell.FormattedValue
),具体取决于此处为文本类型的单元格的FormatType
来处理null case。DatagridViewCell.FormattedValue
是一个对象,因此您必须先将其转换为字符串。这样做:
int rowIndex = dataGridView1.Rows.Cast<DataGridViewRow>().First(row => row.Cells[this.colDesired.Index].FormattedValue.ToString() == stringToSearch).Index;
答案 1 :(得分:0)
这应该有效:
int rowIndex = this.dataGridView1.Rows.OfType<DataGridViewRow>()
.First(row => row.Cells[this.colDesired.Index].Value == stringToSearch).Index;