【发布时间】:2010-12-09 02:31:31
【问题描述】:
我有一种方法可以为给定类型、属性和值的 linq 查询构建表达式。只要类型上的属性不可为空,这将非常有效。这是我正在使用的示例 (http://www.marcuswhitworth.com/2009/12/dynamic-linq-with-expression-trees) 我在属性上调用 Equals 方法。但是我发现 Nullable 类型的 Equals 方法将 Object 作为参数而不是 Nullable 类型。我尝试使用 GetValueOrDefault 隐藏空值,但 EF 不支持该方法。作为一个简单的例子,下面的代码会抛出一个错误:
decimal? testVal = new decimal?(2100);
var test = (from i in context.Leases where i.AnnualRental.Equals(testVal) select i).ToList();
但是,如果您使用 == 而不是 Equals() 方法,它将可以正常工作。但是,我不确定如何将代码转换为使用 == 而不是 Equals() 。任何建议将不胜感激。
【问题讨论】:
-
为什么
==在这种情况下不起作用? -
我会问和 cdhowie 一样的问题,当 == 几乎做同样的事情时,你为什么要使用 Equals? var test = context.Leases.Where(l => l.AnnualRental == testVal).ToList();应该可以正常工作吗?
标签: linq entity-framework expression-trees