Luis,
a questão é que quando você aplicou o new depois do select, você criou um novo tipo, um tipo anonimo ao qual ele só existe dentro do contexto de execução do seu método. Não existe a necessidade
de você fazer isto. tente fazer apenas:
var q = (from c in dc.Categories
select c).ToList();
que possivelmente irá da certo
Olavo Oliveira Neto
Se for útil marque como resposta e faça um Developer feliz :)