It depends.
Don't combine technologies that are meant to replace each-other.
Method 1 is LINQ, but it isn't LINQ to SQL, because you use several explicit casting and that over dataset objects - actually this is an existing approach called
LINQ to DataSet[
^] - but as I see, this was meant only for transition.
I suggest you use either
DataSet approach or
LINQ to SQL, or
Entity Framework.
Avoid using the integer indexer over the tables collection.
DataReader can be a good approach if the schema is simple, and you don't need bidirectional access - reporting is a good example. It consumes less resources and it is fast.