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

Get DataTable from DataGridView's Specific Rows with Linq

我有一个 datagridview,我想在某些条件下从中创建一个数据表。例如,当用户双击一行时,我想让该行成为一个数据表,或者 datagridview 有一个复选框单元格,我想要一个来自该网格的数据表,其中选中了检查列。我怎么能用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

此代码将帮助您入门:

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