如何将DataGridViewRowCollection转换为DataRow []

时间:2014-07-15 10:52:20

标签: c# .net visual-studio

我想将DataGridViewRowCollection转换为DataRow[] 有没有像:

 DataRow[] rowarray=(DataRow[])(datagridview.Rows);

或者我是否必须使用foreach转换每一行?

3 个答案:

答案 0 :(得分:2)

您需要先将其转换为DataTable。

DataTable data = (DataTable)(datagridview.DataSource);

然后将行复制到DataRow数组中。

DataRow[] drArray = new DataRow[data.Rows.Count];
data.Rows.CopyTo(drArray, 0);

答案 1 :(得分:0)

我希望这会有所帮助。试一试,告诉我们。

void covertDGVToRowColl() {

       DataRow[] rowColl = new DataRow[dgTemp.Rows.Count];//dgTemp is the datagridview



        DataTable dtTable = new DataTable();

        foreach (DataGridViewColumn dgvColumn in dgTemp.Columns)
        {
            dtTable.Columns.Add(dgvColumn.Name);

        }

        DataRow newRow;
        int i = 0;
        foreach (DataGridViewRow dRow in dgTemp.Rows)
        {
            newRow = dtTable.NewRow();
            foreach (DataGridViewColumn dgvColumn in dgTemp.Columns)
            {

                newRow[dgvColumn.Name] = dRow.Cells[dgvColumn.Name].Value;

            }

            rowColl[i] = newRow;
            ++i;
        }

}

答案 2 :(得分:0)

Linq怎么样?

DataRow[] rows = dataGridView1.Rows.Cast<DataGridViewRow>()
                                   .Select(r => r.DataBoundItem as DataRowView)
                                   .Where(drv => drv != null)
                                   .Select(drv => drv.Row)
                                   .ToArray();