我想知道是否有人知道,如果LINQ to SQL有能力生成包含ISNULL
函數的TSQL代碼?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您鏈接的問題與我所問的內容無關。 – arcain
你說得對,我的錯。 – McGarnagle