Well, you can create a Method in DAL
that fetches data from the DB and returns you the DataTable or DataSet
as appropriate for you.
Select c.id as ConsultantId,c.Name as Name,e.amount
from consultant c
inner join experses e
on c.ConsultantId=e.ConsultantId
Let your BAL do bussiness logic such as creating Consultant Class object Array and do validation on amount(such as amount can't be less than 0).
BAL returns Array of Consultant
objects which you can use to bind with data control(or you can even send back the dataTable from the BAL as well.
I think Linq is using the first approach where it generates the sql script from the Linq Syntax and returns you collaction of object of particular type.