Utilizzando il semplice esempio seguente, qual è il modo migliore per restituire risultati da più tabelle usando Linq to SQL?
Di 'che ho due tavoli:
Dogs: Name, Age, BreedId
Breeds: BreedId, BreedName
Voglio restituire tutti i cani con loro BreedName
. Dovrei convincere tutti i cani a usare qualcosa del genere senza problemi:
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;
}
Ma se voglio cani con razze e provare questo ho problemi:
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;
}
Ora mi rendo conto che il compilatore non mi consente di restituire un set di tipi anonimi poiché si aspetta Dogs, ma c'è un modo per restituirlo senza dover creare un tipo personalizzato? O devo creare la mia classe per DogsWithBreedNames
e specificare quel tipo nella selezione? O c'è un altro modo più semplice?
foreach (var cust in query) Console.WriteLine("id = {0}, City = {1}", cust.CustomerID, cust.City);