使用Linq从DataGridView的特定行获取DataTable

时间:2015-09-17 15:06:30

标签: c# linq datagridview datatable

我有一个datagridview,我想在某些条件下从中创建一个数据表。例如,当用户双击一行时,我想使该行成为数据表,或者datagridview有一个checkboxcell,我想要从该网格中检查检查列的数据表。我怎么能用linq做到这一点?这有什么linq方式吗?

我从数据库获取sqldataadaptor的数据表,并用

将其绑定到datagridview
dataGridView.DataSource = myDataTable;

我有一个正常工作的代码,当用户在datagridview中双击一个单元格时,我将该行转到数据表中,就像这样

foreach (DataGridViewColumn column in dataGridView.Columns)
                dataTable.Columns.Add(column.Name, column.ValueType); 
            dataTable.Rows.Add();
            for (int j = 0; j < dataGridView.Columns.Count; j++)
            {
                dataTable.Rows[0][j] = dataGridView.Rows[e.RowIndex].Cells[j].Value;
            }

我只是想知道,如果有一种linq方法可以将这个结果作为数据表,比如

dataTable =dataGridView.Rows.Cast<DataGridViewRow>().Where(f=>f.Index==e.RowIndex) //rowindex is the double clicked rows index here

1 个答案:

答案 0 :(得分:0)

此代码将帮助您入门:

DataTable dt = new DataTable();

foreach (DataGridViewColumn column in dataGridView1.Columns)
    dt.Columns.Add(column.Name);

DataGridViewSelectedRowCollection row = this.dataGridView1.SelectedRows;

foreach (DataGridViewRow dr in row)
    dt.Rows.Add(dr);