c#-4.0 - 在存在尾随空格的情况下使用 SqlFunctions.IsNumeric() 吗?

标签 c#-4.0 linq-to-entities sqlclient

我有一个简单的 LINQ-to-Entities 查询,如下所示:

 var BillingNumbers = from o in dbcontext.Orders
                      where SqlFunctions.IsNumeric(o.BillingNumber) == 1
                      select o.BillingNumber;

此查询在大多数情况下都有效。然而,最近我遇到了一种情况,BillingNumber 确实是数字,但有一些尾随空格。该查询完全错过了这些值。

如果SqlFunctions.IsNumeric()无法忽略尾随空格,有哪些替代方案?

.Net 4/EF4/VS2010

最佳答案

你可以做到

where SqlFunctions.IsNumeric(o.BillingNumber.Trim()) == 1

翻译过来就是

WHERE (ISNUMERIC(LTRIM(RTRIM([Extent1].[BillingNumber])))) > 0

要注意的是,这种查询方式不是sargable ,因此,如果您可以在比较之前通过任何其他方式缩小订单范围,请务必这样做!

关于c#-4.0 - 在存在尾随空格的情况下使用 SqlFunctions.IsNumeric() 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9778309/

相关文章:

regex - 用单个 Regex.Replace() 替换多个字符串 Replace()

c# - Linq to Entities 中的联合订单

c# - 在 ASP.Net Core 3.1 中等待 SqlClient 调用的最佳方法

c# - 使用 LINQ-to-Entities 返回一个对象集合,其中一个对象属性与另一个对象集合中的任何属性匹配

c# - 使用 LINQ to Entities 的外连接查询

Intellisense 在 SQL Server Management Studio 中不工作。可能是什么原因?

c# - 如何在 C# 中使用通用数据库连接调用存储过程?

C# 如何创建将数组作为参数传递的方法?

mysql - 在 mySql 中以 %W %M %d %Y 格式排序日期

visual-studio-2010 - 在 64 位系统上使用 32 位 dll 显示 0x8007000B 错误