如何检查两个不同的LINQ查询是否有相同的结果

本文关键字:查询 LINQ 结果 是否 两个 何检查 检查 | 更新日期: 2023-09-27 18:08:12

两个不同的查询计算相同的结果。
我需要在不执行查询的情况下检查它们是否相等。
如何检查两个不同的LINQ查询是否相同?

var exprA = (from o in orders where o.HasPrice == true);
var exprB = (from o in orders where o.HasPrice != false);
//HasPrice is a boolean

任何内置的。net解决方案或现有的库都将受到欢迎。

如何检查两个不同的LINQ查询是否有相同的结果

如果这两个(或任何其他两个)语句是"相同的",则定义很差。如果HasPrice是而不是 bool,会怎么样?

在任何情况下,这里最接近答案的是您需要使用SMT算法来计算它。我不知道你的用例是否存在"开箱即用"

我认为解决这个问题几乎是不可能的。因为,在复杂的查询中存在复杂的条件,例如:where o.Price > 0 && o.Price < 2where o.Price == 1。有时这些查询是相等的(当o.Price是int或long时),但有时不是(例如,当o.Price是double时)。所以,一般的方法是无法解决的。问题的边界非常不明确。

在我看来,你的问题似乎不是一个原始问题,而是解决方案的一部分。所以,也许我们需要更深入地了解最初的问题