En utilisant l'exemple simple ci-dessous, quelle est la meilleure façon de renvoyer les résultats de plusieurs tables à l'aide de Linq vers SQL?
Disons que j'ai deux tables:
Dogs: Name, Age, BreedId
Breeds: BreedId, BreedName
Je veux rendre tous les chiens avec leur BreedName
. Je devrais obliger tous les chiens à utiliser quelque chose comme ça sans problème:
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;
}
Mais si je veux des chiens de races et que j'essaye, j'ai des problèmes:
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;
}
Maintenant, je me rends compte que le compilateur ne me permet pas de renvoyer un ensemble de types anonymes car il attend des chiens, mais existe-t-il un moyen de le retourner sans avoir à créer un type personnalisé? Ou dois-je créer ma propre classe pour DogsWithBreedNames
et spécifier ce type dans la sélection? Ou existe-t-il un autre moyen plus simple?
foreach (var cust in query) Console.WriteLine("id = {0}, City = {1}", cust.CustomerID, cust.City);