我想知道是否有人明确知道LINQ to SQL是否具有生成包含该ISNULL函数的TSQL代码的能力?
我知道??在查询中使用coalesce operator():
from o in Table
where (o.Field ?? 0) > 0
select o
Run Code Online (Sandbox Code Playgroud)
将导致LINQ to SQL发出COALESCE函数:
SELECT [t0].[Field]
FROM [Table] AS [t0]
WHERE (COALESCE([t0].[Field],0)) > 0
Run Code Online (Sandbox Code Playgroud)
并且,?:在查询中使用条件运算符():
from o in Table
where (o.Field == null ? 0 : o.Field) > 0
select o
Run Code Online (Sandbox Code Playgroud)
将导致TSQL包含一个CASE语句:
SELECT [t0].[Field]
FROM [Table] AS [t0]
WHERE (
(CASE
WHEN [t0].[Field] IS NULL THEN 0
ELSE [t0].[Amount]
END)) > 0
Run Code Online (Sandbox Code Playgroud)
但是,可以强制LINQ to …