简体   繁体   中英

How to convert DataGridViewRowCollection to DataRow[]

I want to convert DataGridViewRowCollection to DataRow[] Is there any way like:

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

Or do I have to convert each row using foreach ?

You need to convert it to a DataTable first.

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

Then copy the rows into a DataRow array.

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

How about with Linq?

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

I hope this will help. Try it and let us know.

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM