2013-08-21 41 views
0

我想查询标题名称的datagridview。在我列出清单后,我会通过其他方式循环。以下是填充的datagridview的示例。如何查询DataGridView的标题名称?

feature | serverName1 | serverName2 | serverName3 
database| no   | yes   | no 
apps | yes   | no   | yes 
services| yes   | yes   | yes 

所以在这个例子中,如果我正在寻找哪些服务器有数据库,它会返回“serverName2”。或者如果它有应用程序,它会返回“serverName1,serverName3”等。思考?

回答

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

我认为后者更好。

+0

很好用,谢谢。 – Sparhawk