我想知道是否有人明确知道 LINQ to SQL 是否有能力生成包含该ISNULL
函数的 TSQL 代码?
我知道??
在查询中使用合并运算符 ():
from o in Table
where (o.Field ?? 0) > 0
select o
将导致 LINQ to SQL 发出COALESCE
函数:
SELECT [t0].[Field]
FROM [Table] AS [t0]
WHERE (COALESCE([t0].[Field],0)) > 0
并且,在查询中使用条件运算符 ( ?:
):
from o in Table
where (o.Field == null ? 0 : o.Field) > 0
select o
将导致 TSQL 包含以下CASE
语句:
SELECT [t0].[Field]
FROM [Table] AS [t0]
WHERE (
(CASE
WHEN [t0].[Field] IS NULL THEN 0
ELSE [t0].[Amount]
END)) > 0
但是,可以强制 LINQ to SQL 生成包含ISNULL
以下内容的 TSQL 代码吗?
SELECT [t0].[Field]
FROM [Table] AS [t0]
WHERE (ISNULL([t0].[Field],0)) > 0
我打赌答案是“不,它不能”,但我希望看到一些权威的东西。