Jak wziąć DataTable i przekonwertować go na listę?DataTable do listy <object>
Załączam kod poniżej zarówno w C#, jak i VB.NET. Problem z obiema z nich polega na tym, że tworzymy nowy obiekt, który zwraca dane, co jest bardzo kosztowne. Muszę zwrócić referencję do obiektu.
Obiekt DataSetNoteProcsTableAdapters.up_GetNoteRow implementuje interfejs INote.
Używam ADO.NET, wraz z .NET 3.5
C# kodu
public static IList<INote> GetNotes()
{
DataSetNoteProcsTableAdapters.up_GetNoteTableAdapter adapter =
new DataSetNoteProcsTableAdapters.up_GetNoteTableAdapter();
DataSetNoteProcs.up_GetNoteDataTable table =
new DataSetNoteProcs.up_GetNoteDataTable();
IList<INote> notes = new List<INote>();
adapter.Connection = DataAccess.ConnectionSettings.Connection;
adapter.Fill(table);
foreach (DataSetNoteProcs.up_GetNoteRow t in table) {
notes.Add((INote)t);
}
return notes;
}
kod VB.NET
Public Shared Function GetNotes() As IList(Of INote)
Dim adapter As New DataSetNoteProcsTableAdapters.up_GetNoteTableAdapter
Dim table As New DataSetNoteProcs.up_GetNoteDataTable
Dim notes As IList(Of INote) = New List(Of INote)
adapter.Connection = DataAccess.ConnectionSettings.Connection
adapter.Fill(table)
For Each t As DataSetNoteProcs.up_GetNoteRow In table
notes.Add(CType(t, INote))
Next
Return notes
End Function
Każdy powód dlaczego nie używasz LINQ2SQL do tego? –
Dup: http://stackoverflow.com/questions/545328/datatable-to-generic-list-memory-leak/545429#545429 –
Klient nie chce używać LINQ2SQL lub LINQ ogólnie. Dzięki za link, to bardzo pomoże. Mam zamiar uruchomić kilka razy i zobaczyć, co się stanie – Coppermill