Wie können Sie anhand des folgenden einfachen Beispiels die Ergebnisse mehrerer Tabellen mit Linq to SQL am besten zurückgeben?
Angenommen, ich habe zwei Tabellen:
Dogs: Name, Age, BreedId
Breeds: BreedId, BreedName
Ich möchte alle Hunde mit ihren zurückgeben BreedName
. Ich sollte alle Hunde dazu bringen, so etwas ohne Probleme zu benutzen:
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;
}
Aber wenn ich Hunde mit Rassen will und dies versuche, habe ich Probleme:
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;
}
Jetzt ist mir klar, dass der Compiler es mir nicht erlaubt, eine Reihe anonymer Typen zurückzugeben, da er Hunde erwartet. Gibt es jedoch eine Möglichkeit, dies zurückzugeben, ohne einen benutzerdefinierten Typ erstellen zu müssen? Oder muss ich eine eigene Klasse für DogsWithBreedNames
diesen Typ erstellen und diesen in der Auswahl angeben? Oder gibt es einen anderen einfacheren Weg?
foreach (var cust in query) Console.WriteLine("id = {0}, City = {1}", cust.CustomerID, cust.City);