Bauen IQueryable.Alle mit Expression-Trees für LINQ-Abfragen

Ich Baue eine SQL "WHERE" - Klausel, die dynamisch mit dem System.Linq -.Ausdrücke.Ausdruck-Klasse. Es funktioniert gut für einfache Klauseln, z.B. um "PhaseCode = X" - Klausel, ich Tue das folgende:

var equalTarget = Expression.Constant(phaseCode, typeof(int?));
var phaseEquals = Expression.Equal(Expression.PropertyOrField(projParam, "PhaseCode"), equalTarget);

Aber jetzt versuche ich, um einen Ausdruck zu erstellen, der liefert den Datensatz, wenn ein Projekt zugewiesen wurde, um eine bestimmte Gruppe. Projekt und die Gruppe hat viele-zu-viele-Beziehung.
Ohne den Ausdruck Bäume, ich würde es machen wie folgt:

db.Projects.Where(p => .... && p.GroupsAssigned.Any(g => g.ID == groupId))

Aber ich kann nicht scheinen, um einen Weg zu finden, um auszudrücken, dass mit dem Ausdruck Klasse.
Es gibt eigentlich zwei Dinge, die ich nicht herausfinden können:

  • Wie die traverse von Beziehungen zwischen Tabellen
  • Wie x zu tun.Jede()

Jede Hilfe wird sehr geschätzt.

InformationsquelleAutor Alec Bryte | 2013-03-12
Schreibe einen Kommentar