ADO.NET: преобразование DataTable в массив DataRows

Я использую ADO.NET и С#, и я хочу преобразовать объект DataTable в массив DataRows. Каков элегантный способ сделать это?

Ответ 1

Моим первым вопросом было бы почему? Запрос не имеет смысла.

Ответ:

DataRow[] rows = myDataTable.Select();

Ответ 2

На самом деле DataTable имеет свойство, называемое Rows, ведьма предоставляет методы для этого.

Вы можете выполнить это:

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

Ответ 3

DataTable.Select() предоставляет вам массив DataRows. Вы можете использовать это как массив

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

Если вам нужен ArrayList, вы можете

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

Я не использовал функцию dt.rows.CopyTo. возможно, это тоже работает.

Ответ 4

Если вы хотите видеть содержимое в виде строки, используйте этот код:

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