Usando o exemplo simples abaixo, qual é a melhor maneira de retornar resultados de várias tabelas usando o Linq para SQL?
Digamos que eu tenha duas tabelas:
Dogs: Name, Age, BreedId
Breeds: BreedId, BreedName
Eu quero devolver todos os cães com os deles BreedName
. 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 quero cães com raças e tente 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 Dogs, mas existe uma maneira de retornar isso sem ter que criar um tipo personalizado? Ou tenho que criar minha própria classe DogsWithBreedNames
e especificar esse tipo no select? Ou existe outra maneira mais fácil?
foreach (var cust in query) Console.WriteLine("id = {0}, City = {1}", cust.CustomerID, cust.City);