在存在尾随空格的地方使用SqlFunctions.IsNumeric()?

FMF*_*MFF 3 linq-to-entities sqlclient c#-4.0

我有一个简单的LINQ到实体查询,如下所示:

 var BillingNumbers = from o in dbcontext.Orders
                      where SqlFunctions.IsNumeric(o.BillingNumber) == 1
                      select o.BillingNumber;
Run Code Online (Sandbox Code Playgroud)

该查询大部分时间都有效。但是,最近我遇到了这样一种情况,其中BillingNumber确实是数字,但是有一些尾随空格。该查询完全错过了这些值。

如果SqlFunctions.IsNumeric()不能忽略尾随空格,还有哪些选择?

.Net 4 / EF4 / VS2010

Ger*_*old 5

你可以做

where SqlFunctions.IsNumeric(o.BillingNumber.Trim()) == 1
Run Code Online (Sandbox Code Playgroud)

它翻译成

WHERE (ISNUMERIC(LTRIM(RTRIM([Extent1].[BillingNumber])))) > 0
Run Code Online (Sandbox Code Playgroud)

请注意,这种查询方式不可修改,因此,如果您可以在进行比较之前以其他任何方式缩小订单范围,请确保执行此操作!