我的班级的简单例子:
public class Post
{
public IEnumerable<Tag> Tags { get; set; }
}
用户检查几个感兴趣的标签以过滤帖子列表。
我需要按选定的标签过滤所有帖子,例如:
Session.QueryOver<Post>()
.WhereRestrictionOn(x => x.Tags)
.IsIn(criterion.InterestedTags.ToList())
.List<Post>();
例外:NHibernate.QueryException: Cannot use collections with InExpression
实际上,如果它的标签之一包含在 InterestedTags 中,我应该显示帖子。
UPD
为我工作:
Session.QueryOver<Post>()
.JoinAlias(p => p.Tags, () => tag)
.WhereRestrictionOn(() => tag.Id)
.IsIn(criterion.InterestedTags.Select(x => x.Id).ToArray())
.List<Post>();