我正在尝试将以下 SQL-Select 转换为 LINQ to Entities,并且在
isnumeric
检查方面遇到问题,希望社区能给我一个如何解决它的提示。
select top(1) column1
from myDataTable with (nolock)
where id = '123456789'
and ISNUMERIC(column1) = 0
临界点是第 1 列,它来自类型
varchar
,可以包含字母数字值和数字值。
我在 LINQ to Entities 中尝试了以下操作以从表中获取整行:
int column1Value;
int paramId = 123456789;
var entry = myDataTable.FirstOrDefault(
x => x.Id == paramId && !(int.TryParse(x.column1, out column1Value))
);
在下一步中,我想检查条目是否为 null,然后从 column1 获取值。
但是当我调试它时,出现以下错误
LINQ to Entities 无法识别方法“Boolean TryParse(System.String, Int32 ByRef)”。
如何在 LINQ 中实现
isnumeric
检查?
var value1 = (from d in myDataTable
where d.id == "123456789"
&& SqlFunction.IsNumeric(d.column1) == 0
select d.Column1).FirstOrDefault();
IsNumeric
,事实上,所有 SqlFunction
的存在只是为了告诉 Linq 在 SQL 中使用同名函数。它的定义是这样的:
[System.Data.Objects.DataClasses.EdmFunction("SqlServer", "ISNUMERIC")]
public static int? IsNumeric (string arg);
您可以使用 EdmFunctionAttribute 在 LINQ 语句中使用用户定义的 SQL 函数。