2010-02-03 16 views

risposta

19

La mia prima domanda sarebbe perché? La richiesta non ha senso.

La risposta è:

DataRow[] rows = myDataTable.Select(); 
+0

Questo non sembra copiare qualsiasi file con RowState == DataRowState.Deleted – Alex

+1

@alex: Ecco perché una fila con uno stato 'Deleted' non è più considerato parte della tabella. Se vuoi verificare, confronta '.Select()' con 'table.Rows.Count'. Scoprirai che sono identici. –

+0

SEI ECCEZIONALE! –

2

In realtà la DataTable ha una proprietà chiamata righe, strega fornisce i metodi per fare questo.

È possibile raggiungere questo obiettivo facendo:

List<System.Data.DataRow> r = d.Rows.AsQueryable().OfType<System.Data.DataRow>().ToList(); 
+0

Votato perché stavo cercando il modo "LINQ" ... Grazie! –

1

DataTable.Select() ti dà una matrice di DataRow. È possibile utilizzare questo come un array

Dim dt As New DataTable 
Dim dr() As DataRow = dt.Select() 

Nel caso in cui si desidera un ArrayList, è possibile

public ArrayList ConvertDT(ref DataTable dt) 
{ 
     ArrayList converted = new ArrayList(dt.Rows.Count); 
     foreach (DataRow row in dt.Rows) 
     { 
       converted.Add(row); 
     } 
     return converted; 
} 

non ho utilizzato la funzione dt.rows.CopyTo. forse funziona anche

0

Se volete vedere il contenuto sotto forma di stringa, utilizzare questo codice:

string.Join(",", dataTable.AsEnumerable().SelectMany(row => row.ItemArray)) 
Problemi correlati