gpt4 book ai didi

NHibernate QueryOver 和集合过滤

转载 作者:行者123 更新时间:2023-12-01 20:23:28 27 4
gpt4 key购买 nike

我的类(class)的简单示例:

public class Post
{
public IEnumerable<Tag> Tags { get; set; }
}

用户检查一些感兴趣的标签来过滤帖子列表。

我需要按选定的标签过滤所有帖子,例如:

Session.QueryOver<Post>()
.WhereRestrictionOn(x => x.Tags)
.IsIn(criterion.InterestedTags.ToList())
.List<Post>();

异常:NHibernate.QueryException:无法将集合与 InExpression 一起使用

实际上,如果其中一个标签包含在 InterestedTags 中,我应该显示帖子。

UPD

对我有用:

Session.QueryOver<Post>()
.JoinAlias(p => p.Tags, () => tag)
.WhereRestrictionOn(() => tag.Id)
.IsIn(criterion.InterestedTags.Select(x => x.Id).ToArray())
.List<Post>();

最佳答案

您必须使用别名来对一对多部分进行限制

尝试以下代码片段:

Tag tag = null; 
Session.QueryOver<Post>()
.JoinAlias(p => p.Tags, () => tag)
.WhereRestrictionOn(() => tag.Id)
.IsIn(criterion.InterestedTags.ToList()) //*
.List<Post>();

*假设InterestedTags是标识符的集合。

关于NHibernate QueryOver 和集合过滤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10810909/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com