我想查询datagridview以获取标题名称。在我获得列表之后,我会循环查看其他内容。这是填充的datagridview的一个示例。
feature | serverName1 | serverName2 | serverName3
database| no | yes | no
apps | yes | no | yes
services| yes | yes | yes
所以在这个例子中,如果我在寻找具有数据库的服务器,它将返回" serverName2"。或者,如果它有应用程序,它将返回" serverName1,serverName3"等等。想法?
答案 0 :(得分:2)
public string[] GetHeaders(string feature){
var result = dataGridView1.Columns
.OfType<DataGridViewColumn>()
.Where(c=>dataGridView1.Rows
.OfType<DataGridViewRow>()
.Any(r=>r.Cells["feature"].Value.ToString() == feature) &&
r.Cells[c.Name].Value.ToString() == "yes"))
.Select(c=>c.HeaderText)
.ToArray();
return result;
}
或者这个:
public string[] GetHeaders(string feature){
var row = dataGridView1.Rows
.OfType<DataGridViewRow>()
.FirstOrDefault(r=>r.Cells["feature"].Value.Equals(feature));
if(row == null) return null;
return row.Cells.OfType<DataGridViewCell>()
.Where(c=>c.Value.Equals("yes"))
.Select(c=>c.OwningColumn.HeaderText)
.ToArray();
}
我认为后者更好。