Hier ist das Setup habe ich ein Objekt bekommt, das wie so eine Liste von Ereignissen enthält:Wie von der Art eines verschachtelten Objekts in RavenDB abfragen
public class Order
{
public string Name {get; set;}
public List<OrderEvent> OrderEvents {get; set;}
public bool IsComplete() => OrderEvents.Any(e => e.GetType() == typeof(OrderComplete));
}
public class OrderEvent
{
public DateTime TimeStamp {get; set;}
}
public class OrderSubmitted : OrderEvent {...quantity ect...}
public class OrderPaidFor : OrderEvent {...amounts...}
public class OrderComplete : OrderEvent {...more stuff...}
Jetzt kann ich diese Daten in die Datenbank-Dump und ziehe es raus und alles ist gut, aber wie schreibe ich eine Abfrage, um nur die abgeschlossenen Aufträge zu erhalten, ohne alle Bestellungen auf die Client-Seite zu ziehen und dort zu filtern?
Ich habe die folgende Abfrage versucht, aber mir wurde gesagt, dass ich GetType nicht so übersetzen kann.
Session.Query<Order>()
.Where(o => o.Events.Any(e => e.GetType() == typeof(OrderComplete)))
.ToList();
Ich bin mir ziemlich sicher, dass es ein guter Weg, dies mit JObjects zu tun, und die $ type-Eigenschaft abfragen, aber Google und meine Bemühungen gekommen sind, nicht mit irgendetwas auf gut noch.
Danke.
Dies war nicht die Antwort, die ich erwartet habe, aber man macht den Code einfach zu lesen und zu arbeiten. Manchmal ist die einfache Antwort die beste Antwort. Vielen Dank! – Yojin