2011-11-03 42 views
0

這是可空的VARCHAR列名個人表我的查詢:爲什麼在.NET 3.5中L2SQL不能使用空字符串工作?

(from p in Persons 
where p.Name == null || p.Name.Equals(String.Empty) 
select p).Count() 

在.NET 4.0中它翻譯成:

DECLARE @p0 VarChar(1000) = '' 
SELECT COUNT(*) 
FROM [Persons] AS [t0] 
WHERE ([t0].[Name] IS NULL) OR ([t0].[Name] = @p0) 

然而在.net 3.5到:

DECLARE @p0 VarChar(1000) = '' 
SELECT COUNT(*) 
FROM [Persons] AS [t0] 
WHERE ([t0].[Name] = @p0) 

3.5似乎忽略了一些記錄給出不正確的結果。

+0

這些不是相同的查詢輸出。 EDG字段是可空的嗎? –

+0

@Hanan Khan - 對不起,應該是名字不是EDG,我更新了問題 – jlp

回答

1

我相信你正在看你的.NET 4.0例子的錯誤查詢。在那裏查詢的字段與您的LINQ查詢所查看的Name字段無關。

另外請確保您在兩個示例中都實際使用了LINQ to SQL。如果您單獨構建了這兩個,那麼.NET 4.0示例有可能使用實體框架,在某些情況下可能會產生不同的查詢。

+0

對不起,我已經將列名更改爲示例中的Name。我在這兩個例子中都使用L2SQL。 – jlp

相關問題