title: DataTable or List of strongly typed objects for cleaner codebase?
body: <pre><code>Public Function GetUserList() As DataTable
      Dim resultTable As New DataTable
      Dim queryString As String = "SELECT NAME, ID FROM user" 
      ...
  
      myDataAdapter.Fill(resultTable)
  
      ...
  
      Return resultTable
  End Function
  </code></pre>
  
  <p>vs</p>
  
  <pre><code>Public Function GetUserList() As List(Of User)
      Dim resultList As New List(Of User)
      Dim queryString As String = "SELECT NAME, ID FROM user" 
  
      ...
  
      Do While(myDataReader.Read())
          resultList.add( _
          new User(myDataReader.GetString(0),myDataReader.GetInt32(1)))
      Loop                         
  
      ...
  
      Return resultList
  End Function
  </code></pre>
  
  <p>The second method tells the function caller what return types to expect so it should be better. The problem is it requires different classes to hold the return values for different queries! </p>
  
  <p>I cannot imagine it would be very "clean" when you have 50 struct-like classes that are only used in one or two functions?? Am I missing something?</p>
  
  <p>Edit: To clarify my question: Should I create 1 class for 1 query or is there other better practice?</p>