Usando el ejemplo simple a continuación, ¿cuál es la mejor manera de devolver resultados de múltiples tablas usando Linq a SQL?
Digamos que tengo dos tablas:
Dogs: Name, Age, BreedId
Breeds: BreedId, BreedName
Quiero devolver todos los perros con sus BreedName
. Debo hacer que todos los perros usen algo como esto sin 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;
}
Pero si quiero perros con razas y pruebo esto, tengo 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;
}
Ahora me doy cuenta de que el compilador no me permite devolver un conjunto de tipos anónimos, ya que espera perros, pero ¿hay alguna manera de devolver esto sin tener que crear un tipo personalizado? ¿O tengo que crear mi propia clase DogsWithBreedNames
y especificar ese tipo en la selección? ¿O hay otra manera más fácil?
foreach (var cust in query) Console.WriteLine("id = {0}, City = {1}", cust.CustomerID, cust.City);