2016-11-17 36 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