【问题标题】:Get DataTable from DataGridView's Specific Rows with Linq使用 Linq 从 DataGridView 的特定行中获取 DataTable
【发布时间】:2015-09-17 15:06:29
【问题描述】:

我有一个 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

【问题讨论】:

  • 你能分享你的代码吗?
  • 你是如何绑定和/或创建 DataGridView 开始的......?如果要将数据表绑定到 DataGridView 并且单击或双击 GridView 的行,则需要更具体地说明所需内容。那么为什么要创建新的数据表。请对以下内容进行更多研究/阅读DataTable, DataSet, DataRow, DataGrid, DataGridView, ....etc
  • @MethodMan 我添加了我想知道的内容,我想从对话框表单中返回一个数据,显示用户一些产品,当用户选择产品时我不想再次查询,我想发送产品信息返回到我的主窗体。这就是我所做的。我只是想知道是否有一种获取该行单元格的 linq 方法。抱歉没有问题。
  • 你应该真正学会在执行 foreach 和嵌套 for 循环时格式化你的代码,当为外部 foreach 循环使用正确的 { } 时,它也会更具可读性

标签: c# linq datagridview datatable


【解决方案1】:

此代码将帮助您入门:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多