我正在运行以下查询以尝试查找要显示给用户的所有相关通知。但是,Raven 对查询中的某些内容不满意。我已经确定涉及日期的最后两行是好的,但其余的不是(他们中的任何一个似乎都让它不高兴)。我得到的唯一有用的信息是“不支持表达式类型:System.Linq.Expressions.TypedParameterExpression”。这些看起来都不是为 LINQ 输入的异常类型。
值得一提的是 action 是枚举的一个实例,其中 n.Actions 是它们的列表。与 user.HiddenNotificationTypes 和 n.Type 类似。我不确定这是否是抛出它的原因。
/* Find all notifications that:
* Have no actions associated or the action that the user has performed
* There are no targets or the user is one of the targets
* The user is not one of the users that has seen this notification
* The notification type isn't one that the user has opted out of
* The current DateTime is after the notification's start time
* The current DateTime is before the expiry date of the notification
* */
notifications = session.Query<Notification>()
.Where(n => (n.Actions == null || action.In(n.Actions))
&& (n.Targets.Count == 0 || user.Id.In(n.Targets))
&& (!user.Id.In(n.UsersSeen))
&& (!user.HiddenNotificationTypes.Contains(n.Type))
&& (n.StartDate == DateTime.MinValue || n.StartDate > DateTime.Now)
&& (n.ExpireDate == DateTime.MinValue || n.ExpireDate < DateTime.Now))
.ToList();
谁能发现可能导致此异常的原因?或者,如果您认为索引更适合此查询,我需要哪种索引?
任何帮助表示赞赏。