Linq is a generic 'front end' allowing you to query data in a similar way to using SQL on a database.
Whan I say 'generic' this just means there are different linq 'engines' that allow it to run over different things.
For example, there is Linq to SQL which allows you to write in your C# program, code which the Linq engine will translate (behind the scenes) into SQL, run, and return the results.
Best of all (IMHO) is Linq to Objects - that is, just using Linq natively in the language.
Say you have a collection of Animal objects in your program, and the user has selected they only want to see animals with 4 legs.
You could go
foreach (Animal animal in Animals)
{
if (animal.Legs == 4)
{
foundAnimals.Add(animal);
}
}
return foundAnimals;
Which is fine, and works efficiently, but, well, takes a few lines of code.
With Linq you can do the same thing as
return Animals.Where(a => a.Legs == 4).ToList();
There's loads more to it - but that's that's the basics (which is what you asked for!)