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

How to check if two different LINQ queries has same result?

两个不同查询的结果相同。
我需要在不执行查询的情况下检查它们的相等性。
如何检查两个不同的 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 解决方案或现有库中的内容都将不胜感激。

如果这两个(或任何其他两个)语句是 "the same" 定义很差。如果 HasPrice 不是人们期望的 布尔值怎么办?

无论如何,这里最接近答案的是您需要使用 SMT algorithm 来评估它。我不知道您的用例是否存在 "out-of-the-box"。

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

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