我想将DataGridViewRowCollection
转换为DataRow[]
有没有像:
DataRow[] rowarray=(DataRow[])(datagridview.Rows);
或者我是否必须使用foreach
转换每一行?
答案 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();