LINQ by itself is just a base technology ("Language Integrated Query") that's baked into C# 3.0 - it has nothing
to do per se with databases. LINQ can be used against a variety of
things - databases, XML, objects in memory, Entity Framework entities,
Active Directory - you name it.
Linq-To-SQL is the lightweight, straightforward, MS-SQLServer only
technology which allows you to use SQL Server tables easily and nicely
as real objects in your .NET application. It's a "Object-relational
mapper" that makes dealing with databases easier. It's SQL Server only,
and Microsoft will not extend it much further - it's available, also in
.NET 4.0, but won't be further developed any more.
ADO.NET is the base data access technology in .NET - it gives you
access to a wide variety of data stores, relational and non-relational.
It's the very basic technology - you deal with your data in a very
low-level, raw manner.
On top of that, you have the ADO.NET datasets, which are a bit like
Linq-to-SQL in that they make it somewhat easier to deal with databases.
Contrary to Linq-to-SQL, you're not dealing with your objects
from your domain model in your .NET code, but instead you're dealing
with the database-oriented rows and columns just like they exist in the
database. It's a more direct representation of what's in the database,
it's on a lower level, it's very tightly coupled to your database
layout, and it's not as "nice" and easy to use as Linq-To-SQL objects -
you deal with lowlevel rows and columns and their values.
If you have the choice right now, and don't need anything but SQL
Server, I would highly recommend checking out Linq-to-SQL - the mapping
from the raw database tables to nice and easy to use .NET objects really
makes your life a whole lot easier!
Check out http://www.dotcominfoway.com/blog/linq-to-sql-vs-ado-net-entity-framework
for a quick comparison.
For me linq to sql is a quicker way to get a small application up and
running and the entity framework is more for large more complex
applications that you can take time to build a big foundation for.