gpt4 book ai didi

c# - 条件分组正在被删除

转载 作者:太空狗 更新时间:2023-10-29 21:35:38 24 4
gpt4 key购买 nike

LINQ to NHibernate 删除 where 子句中的括号:

session.Query<MyEntity>().Where(x => (x.MyProp1 < end && x.MyProp1 > start) ||
(x.MyProp2 < end && x.MyProp2 > start));

这会产生以下查询(请注意缺少的括号):

select <columns> from MY_ENTITY where MY_PROP1 < :p0 and MY_PROP1 > :p1 or 
MY_PROP2 < :p2 and MY_PROP2 > :p3;

这是一个大问题,因为它显着改变了查询条件。

这是一个已知问题还是我做错了什么?

最佳答案

因为 AND 在操作顺序上比 OR 具有更高的优先级,所以不需要括号,所以查询提供程序不会添加冗余信息。

为了帮助记住运算顺序, bool AND 被认为类似于乘法(对二进制值),而 OR 被认为类似于二进制值的加法。在处理 bool 代数时(在非编程环境中),使用 * 表示 AND 和 + 表示 OR 实际上并不少见。

关于c# - 条件分组正在被删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9297235/

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