如何检查 linq toEntity 中的数值

问题描述 投票:0回答:1

我正在尝试将以下 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
检查?

c# linq linq-to-entities
1个回答
0
投票
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 函数。

© www.soinside.com 2019 - 2024. All rights reserved.