Retornar resultados do tipo anônimo?

Usando o exemplo simples abaixo, qual é a melhor maneira de retornar resultados de várias tabelas usando o Linq to SQ

Diz que tenho duas tabelas:

Dogs:   Name, Age, BreedId
Breeds: BreedId, BreedName

Quero devolver todos os cães com seBreedName. Eu deveria ter todos os cães usando algo assim sem problemas:

public IQueryable<Dog> GetDogs()
{
    var db = new DogDataContext(ConnectString);
    var result = from d in db.Dogs
                 join b in db.Breeds on d.BreedId equals b.BreedId
                 select d;
    return result;
}

Mas se eu quiser cães com raças e tentar isso, tenho problemas:

public IQueryable<Dog> GetDogsWithBreedNames()
{
    var db = new DogDataContext(ConnectString);
    var result = from d in db.Dogs
                 join b in db.Breeds on d.BreedId equals b.BreedId
                 select new
                        {
                            Name = d.Name,
                            BreedName = b.BreedName
                        };
    return result;
}

Agora, percebo que o compilador não me permite retornar um conjunto de tipos anônimos, pois espera Cães, mas existe uma maneira de retornar isso sem ter que criar um tipo personalizado? Ou tenho que criar minha própria classe paraDogsWithBreedNames e especifique esse tipo no select? Ou existe outra maneira mais fácil?

questionAnswers(15)

yourAnswerToTheQuestion