static void Query()
{
// Pretend we don't know the type
IEnumerable letters = Enumerable.Range('A', 26).Select(l => (char)l);
var words = new[] { "code", "camp", "C#", "Visual Studio", "LINQ" };
var queried = from w in words
group w by char.ToUpper(w[0])
into g
join char l in letters
on (g.Key) equals l
let wordList = string.Join(", ", g)
orderby g.Max(w => w.Length) descending, g.Count()
select new
{
g.Key,
wordList
};
queried.Dump();
}