【发布时间】:2012-06-15 04:38:05
【问题描述】:
我想知道是否有人明确知道 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
我敢打赌答案是“不,它不能”,但我想看看权威的东西。
【问题讨论】:
-
@dbaseman 您链接的 Q 看起来与我的要求无关。
标签: c# linq-to-sql