2013-08-21 40 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