Was ist die beste Methode, um mit Linq to SQL Ergebnisse aus mehreren Tabellen zurückzugeben, und zwar anhand des folgenden einfachen Beispiels?
Angenommen, ich habe zwei Tabellen:
Dogs: Name, Age, BreedId
Breeds: BreedId, BreedName
Ich möchte alle Hunde mit ihren BreedName
. Ich sollte alle Hunde mit so etwas ohne Probleme bekommen:
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 das 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 erkenne ich, dass der Compiler nicht lassen Sie mich einen Satz von anonymen Typen zurückgeben, da es Dogs erwartet, aber gibt es eine Möglichkeit, dies zurückzugeben, ohne einen benutzerdefinierten Typ zu erstellen? Oder muss ich meine eigene Klasse für DogsWithBreedNames
und geben Sie diesen Typ in der Select? Oder gibt es einen anderen, einfacheren Weg?
0 Stimmen
Nur so aus Neugier, warum zeigen alle Linq-Beispiele mit anonymen Typen, wenn sie nicht funktionieren. Z.B., dieses Beispiel tut
foreach (var cust in query) Console.WriteLine("id = {0}, City = {1}", cust.CustomerID, cust.City);
0 Stimmen
@Hot Licks - die Tabelle Customer in diesen Beispielen ist eine Entität, die durch eine Klasse dargestellt wird. Das Beispiel scheint nur nicht die Definitionen dieser Klassen zu zeigen.
0 Stimmen
Sie erfahren auch nicht, dass ein Compilerfehler "var" durch den Klassennamen ersetzt.