Tôi đang sử dụng ADO.NET và C#, và tôi muốn chuyển đổi một đối tượng DataTable thành một mảng DataRows. Một cách thanh lịch để làm điều này là gì?ADO.NET: chuyển đổi một DataTable thành một mảng DataRows
10
A
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();
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))
này dường như không sao chép bất kỳ hàng với RowState == DataRowState.Deleted – Alex
@ 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. –
BẠN ĐANG TUYỆT VỜI! –