Thanks Joe! I've wanted to try making an AJAX control like this for a while, but always thought it'd be more complex - you made it look easy.
From a beginner's viewpoint it wasn't obvious to me that when creating the webmethod, you can change the webmethod name as you like but the parameter names _must_ be prefixText and count (but maybe that's me being dumb)
It seems pretty easy to hook this up to a database using LINQ. If it's of any help, here's my code to query product names in Northwind, (assumes you've already made the linq to northwind class)
[WebMethod]
public string[] GetCompletionList(string prefixText, int count)
{
// OBS! In real world, initialize this someplace else
NorthwindDataContext Db = new NorthwindDataContext();
var matches = from p in Db.Products
where p.ProductName.StartsWith(prefixText)
select p.ProductName;
return matches.ToArray<string>();
}