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

C# 如何检查两个不同的LINQ查询是否具有相同的结果?,c#,.net,linq,expression,C#,.net,Linq,Expression,两个不同查询的计算结果相同。 我需要在不执行查询的情况下检查它们的相等性。 如何检查两个不同的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查询是否相同

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解决方案或现有库都将受到欢迎。

如果这两个或任何其他两个语句相同,则定义非常糟糕。如果哈斯普莱斯并不像人们想象的那样是个傻瓜呢


在任何情况下,最接近答案的是,您需要使用一个参数来评估它。我不知道您的用例是否有现成的解决方案。

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


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

只是好奇:上下文是什么,为什么需要知道,如果代码基本上也是这样做的?@Udontknow性能问题。它并不总是布尔值。可能是o.Price>0&&o.Price<2,以及o.Price==1,其中Price为int。请检查此问题的答案。您到底在寻找什么:1,上述两个查询的最终结果IEnumerable是相同还是2。您甚至不想进入生成IEnumerable类型的级别,而是希望事先为您提供等式。在案例1中,我们可以通过重写类型T的Equals和GetHashCode方法简单地创建一个IEnumerable比较器1@MrinalKamboj我已经提到不想执行查询。这意味着在您的评论中是案例2。@Mahdi这理想情况下不是Linq问题,您正在寻找语义搜索和比较解决方案