2010-02-03 13 views

Odpowiedz

19

Moje pierwsze pytanie brzmi: dlaczego? Żądanie nie ma sensu.

Odpowiedź brzmi:

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

nie wydaje się, aby skopiować wszystkie wiersze z RowState == DataRowState.Deleted – Alex

+1

@Alex: To dlatego, że z rzędu ze stanem "Deleted" nie jest już uważany za część tabeli. Jeśli chcesz zweryfikować, porównaj '.Select()' z 'table.Rows.Count'. Przekonasz się, że są identyczne. –

+0

NIESAMOWITE! –

2

Właściwie DataTable ma właściwość o nazwie Wiersze, czarownica zapewnia sposoby, aby to zrobić.

Można wykonać to robi:

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

Głosowałem bo szukałem drogi "LINQ" ... Dzięki! –

1

DataTable.Select() daje tablicę wierszy DataRows. Można to wykorzystać jako tablicę

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

W przypadku, gdy chcesz ArrayList można

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

ja nie wykorzystał funkcję dt.rows.CopyTo. może to też działa.

0

Jeśli chcesz zobaczyć zawartość jako ciąg znaków, użyj tego kodu:

string.Join(",", dataTable.AsEnumerable().SelectMany(row => row.ItemArray)) 
Powiązane problemy