Auswählen alle untergeordneten Objekte in Linq

Diese sollte wirklich einfach sein, aber ich kann einfach nicht aus mir selbst, die Benutzeroberfläche ist nicht intuitiv genug... 🙁

Sagen wir, ich habe eine State Tabelle, und wählen Sie alle Counties aus mehreren States. In SQL wäre:

select c.*
  from State s join County c on c.StateCode = s.StateCode
 where s.TimeZone = -5 -- or some other criteria

Das oben genannte Beispiel ist trivial genug, um zu konvertieren, um Linq in einem statischen Kontext:

var q = MyDataContext.GetTable<County>().Where(c => c.State.TimeZone = -5);

Aber, wo es beginnt, kompliziert ist, wenn ich eine Kontext-sensitive Abfragen, wie die folgenden:

public static List<County> GetCountiesForStates(List<State> states) {
  //gotta do something to return all the counties for all these states
}

Nun, ich könnte etwas tun, wie dies innerhalb dieser Methode:

var q = MyDataContext.GetTable<County>().Where(c => states.Contains(c.State));

aber IMO, das ist wirklich unelegant, weil (a) ich habe um eine statische MyDataContext anstatt die implizite Daten Rahmen der Status-Objekte und (b) Sie sind, nach hinten arbeiten, und wenn Sie beginnen, kompliziert die Abfrage weiter wird es noch hässlicher.

Gibt es eine Möglichkeit das starten der Abfrage mit:

var q = states... //or "from s in states..."

Instinktiv, möchte ich glauben, dass Sie dies tun können, aber ich habe noch nicht den Weg gefunden...

InformationsquelleAutor Shaul Behr | 2009-06-17
Schreibe einen Kommentar