Hmm, are you comparing datasets with LINQ to SQL? If you are, then I'd say just ditch datasets and go with L2S. DataTable.Select
assumes you've already populated the datatable with data. This can lead to bad designs where you load more data than you need, just to filter in the client. Get SQL Server to do your querying for you, and work on the resultset it gives you. L2S will read from the database only when you iterate the collection, so it's much easier to formulate your queries before hitting the database.
LINQ to SQL introduces some debugging overhead because it can be awkward to get the dynamically-generated SQL out of it (whereas in datasets you are supplying the SQL in the first place), but in almost all other situations it's far more elegant. The deferred loading functionality is especially useful.
If you're not working with a database, then I'd still prefer LINQ (specifically known as LINQ to Objects in this scenario) over datasets. The syntax is just much easier, and because there are no magic strings (i.e. SQL statements) then it's easier to test and you get compile-time warnings for typos etc.