LINQ .equals()和字符串变量

时间:2017-03-31 17:30:40

标签: .net oracle linq

不确定为什么此查询不返回任何结果(请注意CUSTOMERs来自Oracle数据库):

string zip = "12345"
string state = "MA"

var result = from x in CUSTOMERs
             where x.STATE.Equals(state) || x.ZIP.Equals(zip)
             select x;

但是这个呢?

var result = from x in CUSTOMERs
             where x.STATE.Equals("MA") || x.ZIP.Equals("12345")
             select x;

1 个答案:

答案 0 :(得分:1)

以下是我的理解,您在Oracle data connector中使用LinqPad,现在可以查询客户表,因为您运行的是IQueryable<T> Linq Query,与{Linq to Objects不同1}},在远程数据源上执行,并以Expression<Func<T,bool>形式获取表达式树。在提供变量而不是实际的硬编码值时,它无法绑定值。绑定值的问题纯粹是由于它期望的方式并在内部解析表达式树。

要验证我的观点,请检查Fluent语法中CUSTOMERs.Where的签名,它将采用表达式树而不是Linq2Objects所需的Func<T,bool>