![如何检查两个表达式>相同[重复],第1张 如何检查两个表达式>相同[重复],第1张](/aiimages/%E5%A6%82%E4%BD%95%E6%A3%80%E6%9F%A5%E4%B8%A4%E4%B8%AA%E8%A1%A8%E8%BE%BE%E5%BC%8F%26amp%3Bgt%3B%E7%9B%B8%E5%90%8C%5B%E9%87%8D%E5%A4%8D%5D.png)
您可以看一下Linq to db4o内部使用的类型expressionEqualityComparer。它实现了IEqualityComparer
它使用expressionComparison类型比较两个expression是否相等,并使用HashCodeCalculation来根据expression计算哈希码。
所有这些都涉及访问表达式树,因此,如果您反复进行 *** 作,可能会花费很多,但也很方便。
该代码在GPL或dOCL下可用
例如,这是您的测试:
using System;using System.Linq.expressions;using Db4objects.Db4o.Linq.expressions;class Test { static void Main () { expression<Func<int, bool>> a = x => false; expression<Func<int, bool>> b = x => false; expression<Func<int, bool>> c = x => true; expression<Func<int, bool>> d = x => x == 5; Func<expression, expression, bool> eq = expressionEqualityComparer.Instance.Equals; Console.WriteLine (eq (a, b)); Console.WriteLine (eq (a, c)); Console.WriteLine (eq (a, d)); }}它确实会打印True,False,False。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)