gpt4 book ai didi

c# - 使用 QueryOver 的 NHibernate OR

转载 作者:行者123 更新时间:2023-11-30 16:09:56 25 4
gpt4 key购买 nike

我正在尝试使用 NHibernate 3.3 使用 QueryOver 创建一个带有 OR 子句的简单选择。所以对于一个简单的选择,例如:

Select x,y,z from myTable where x='one' or y = 'two' or z = 'three'

我想出了这个:

IList<MyTable> list = session.QueryOver< MyTable >()
.WhereRestrictionOn(
Restrictions.Or(Restrictions.On< MyTable >(tab => tab.x == "One"),
Restrictions.On< MyTable >(tab => tab.y == "Two") )
);

它无法编译,老实说,我怀疑我无论如何都走错了方向。

最佳答案

这个语法应该可以解决

var list = session.QueryOver<MyTable>()
.Where(
Restrictions.Or(
Restrictions.Eq(Projections.Property<MyTable>(tab => tab.x), "One"),
Restrictions.Eq(Projections.Property<MyTable>(tab => tab.y), "Two")
)
)
.List<MyTable>()

如果我们想要更多,Disjunction 是我们实现多个 OR 的方式:

var list = session.QueryOver<MyTable>()
.Where(Restrictions.Disjunction()
.Add(Restrictions.Eq(Projections.Property<MyTable>(tab => tab.x), "One"))
.Add(Restrictions.Eq(Projections.Property<MyTable>(tab => tab.x), "Two"))
.Add(Restrictions.Eq(Projections.Property<MyTable>(tab => tab.x), "xxx"))
)
.List<MyTable>()

关于c# - 使用 QueryOver 的 NHibernate OR,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26803614/

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