Ich kann nicht scheinen, herauszufinden, was ich denke, sollte eine leichte Aufgabe sein. Alle Posts, die ich gefunden habe, scheinen nur die Kinder zurückzubringen oder helfen nicht mit der Null. Ich habe die folgenden KlassenWie wählt man eine übergeordnete und eine gefilterte Liste von Kindern, wenn sie existieren (äußere Verbindung)
public class Parent
{
public int ID { get; set; }
public string Name { get; set; }
public virtual List<Child> Children { get; set; }
}
public class Child
{
public int ID { get; set; }
public string Name { get; set; }
public int isCurrent { get; set; }
}
ich EF bin mit und ich möchte ein bestimmt Eltern zurückzukehren und das aktuellen Kind wenn es existiert. Für mich ist das wie ein Left Outer Join. Ich möchte Methodenerweiterungen verwenden, da ich gerne verstehen würde, wie sie etwas besser funktionieren.
Hier ist ein paar Pseudo-Code, den ich ausprobiert habe. Ich scheine es nicht zu bekommen, einen Elternteil zurückzubringen, selbst wenn sie kein aktuelles Kind haben.
var test = db.Parents
.Where(p => p.ID == 1)
.Select(p => p.Children.Where(c => c.isCurrent == 1).DefaultIfEmpty()
);
Ich möchte es ein übergeordnetes Objekt zurückzukehren und es ist Kinder zu Sammlung nur mit dem aktuellen Kind bevölkert werden, wenn er eine hat.
ich suche um und dies scheint ähnlich. Verwendet jedoch keine Methodenerweiterungen. Ich bin mir nicht sicher, ob es einen Vorteil auf die eine oder andere Art gibt. http://stackoverflow.com/questions/9705463/linq-to-entity-framework-return-a-list-of-parents-with-only-a-subset-or-empty-co – Andrew
"* und die aktuelle * * Kind ** wenn es existiert * "Sagst du, dass nur ein Kind aktuell sein kann? –
Ich denke, das ist die wöchentliche Inkarnation der gefilterten Include-Frage. Wahrscheinlich ein Duplikat von [this] (http://stackoverflow.com/q/16798796/861716) (oder vielen anderen). –