如何构建一个 SQL Server 兼容的表达式树,它可以比较一个字符串,就好像它是一个整数一样?
我的表包含电话号码(例如“01234000000”),我希望动态创建的查询返回一系列电话号码。
我想要的 SQL 是这样的:
SELECT PhoneNumber
FROM MyTable
WHERE PhoneNumber BETWEEN '01234000000' AND '01234000099'
即使 PhoneNumber 是一个 VARCHAR ,它也是完全有效的 SQL 并返回您期望的结果。
我已经尝试了几件事(为清楚起见省略了上限):
Expression.GreaterThanOrEqual(prop, "01234000000") // doesn't work on strings
Expression.GreaterThanOrEqual(
Expression.Convert(prop, typeof(Int64)),
Expression.Constant(1234000000, typeof(Int64))) // not supported by the SQL Query Provider
有没有其他方法可以实现这一目标?如果没有,那么是否可以扩展查询提供程序以将其添加到我自己中,我该怎么做?