0
这里的设置,我有包含像这样的事件列表的对象:如何在嵌套对象的查询类型在RavenDB
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...}
现在我可以转储这个数据到数据库并把它拉出来,一切都很好,但是我怎么写一个查询来获得完成的订单,而不需要拉取客户端的所有订单并在那里过滤?
我试过以下查询,但我被告知我无法像那样转换GetType。
Session.Query<Order>()
.Where(o => o.Events.Any(e => e.GetType() == typeof(OrderComplete)))
.ToList();
我敢肯定有做的一个很好的方式使用这个和JObjects查询$ type属性,但谷歌和我的努力没有想出什么好东西呢。
谢谢。
这并不是我期望的答案,但是它让代码更易于阅读和使用。有时候,简单的答案是最好的答案。谢谢! – Yojin