2010-02-03 36 views

Trả lời

19

Câu hỏi đầu tiên của tôi sẽ là lý do tại sao? Yêu cầu không có ý nghĩa.

Câu trả lời là:

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

này dường như không sao chép bất kỳ hàng với RowState == DataRowState.Deleted – Alex

+1

@ Alex: Đó là bởi vì liên tiếp với trạng thái 'Đã xóa' không còn được coi là một phần của bảng. Nếu bạn muốn xác minh, hãy so sánh '.Select()' với 'table.Rows.Count'. Bạn sẽ thấy chúng giống hệt nhau. –

+0

BẠN ĐANG TUYỆT VỜI! –

2

Trên thực tế các DataTable có một tài sản được gọi là Hàng, phù thủy cung cấp các phương pháp để làm điều này.

Bạn có thể thực hiện việc này:

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

Bình chọn lên cuz Tôi đang tìm kiếm cách "LINQ" ... Cảm ơn! –

1

DataTable.Select() cung cấp cho bạn một loạt các DataRows. Bạn có thể sử dụng như là một mảng

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

Trong trường hợp bạn muốn một ArrayList, bạn có thể

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

Tôi đã không được sử dụng các chức năng dt.rows.CopyTo. có lẽ nó cũng hoạt động.

0

Nếu bạn muốn xem nội dung như là một chuỗi, sử dụng mã này:

string.Join(",", dataTable.AsEnumerable().SelectMany(row => row.ItemArray)) 
Các vấn đề liên quan