"Now, I had a look at the LINQ samples, and as far as I can tell, for an array with a small amount of numbers in it, it can have it's uses. For querying a database with lots of tables and millions of records? Hah! forget it. "
When querying a database using LINQ to SQL, the hard work is done at the database where it should be. For an example, I created a LINQ to SQL mapping for the example SQL 2005 pubs database. Using this mapping I can retrieve all the publishers in the database who have published one or more titles with the following code:
var context = new PubsDataContext();
var items = from p in context.Publishers
where p.Titles.Count > 0
If you enable logging on context, you'll see the following SQL statement being sent to the database when items is accessed for the first time:
SELECT [t0].[pub_id] AS [PublisherId], [t0].[pub_name] AS [Name], [t0].[city] AS
[City], [t0].[state] AS [State], [t0].[country] AS [Country]
FROM [dbo].[publishers] AS [t0]
FROM [dbo].[titles] AS [t1]
WHERE [t1].[pub_id] = [t0].[pub_id]
)) > @p0
ORDER BY [t0].[pub_name]
-- @p0: Input Int (Size = 0; Prec = 0; Scale = 0) 
I'd do some more research if I were you before dismissing LINQ out of hand.