The callback method is for asynchronous access and is required based on the design of the data access layer. You really do not need to go to the DAL to get a random query from a database. In fact, this is not recommended since the DAL should never be touched by anything other than the business layer. If you place code in the UI that goes directly to the DAL, you have broken encapsulation and if you attempt to create any other type of front end this will cause issues for you.All business objects have a GetDataTable method that does what you are trying to do. You do not have to pull data from the table that the BO represents. Also, an ADO.NET data table is returned from the query and you can do whatever you need with that table.