2016-11-17 38 views
0

隨着分組查詢,通過結果建立時,我得到不同的結果C#實體LINQ和linqpad差異

這個工作在LinqPad但不是在代碼

Name = s.Key.FirstName + " " + s.Key.LastName ?? "Unknown User" 

此作品在代碼中,但不是在LinqPad

Name = s.Key.FirstName != null ? s.Key.LastName + " " + s.Key.LastName : "Unknown User" 

這個工作在兩個

Name = String.IsNullOrEmpty(s.Key.FirstName) ? "Unknown User" : s.Key.FirstName + " " + s.Key.LastName, 

任何人都可以解釋爲什麼

+6

這是進入數據庫,或僅僅是在內存中查詢?如果它進入數據庫 - LINQPad使用[LINQ2SQL(https://msdn.microsoft.com/en-us/library/bb425822.aspx) - 當你的應用程序是*可能*使用實體框架。 – Rob

+0

是的,它使用數據庫 –

+0

Linqpad只不過是一個更快的學習工具,對吧?那麼爲什麼不嘗試微軟的官方之一:[101個LINQ樣品(https://code.msdn.microsoft.com/101-LINQ-Samples-3fb9811b) –

回答

1

LinqPad使用LINQ2SQL默認。

的當然是在EFLinq2Sql之間的工作LINQ的差異。這幾乎可以肯定你正在遇到什麼。

LINQ行爲不同的依據是什麼提供商實際運行構成查詢。 還有很多比這更多,但它是一個開始:

您可以編寫自己的LINQ providers

但如果你告訴Linqpad添加一個EF庫會消耗一個創建:

adding an EF context to linqpad