LINQ to Objects和LINQ to SQL查询之间的差异

Gra*_*meF 5 linq linq-to-objects linq-to-sql

我一直在使用LINQ查询我的POCO对象一段时间,但我还没有尝试过LINQ to SQL.我假设LINQ to SQL查询以某种方式转换为等效的SQL查询,鉴于此,我想知道这是否会影响LINQ to SQL查询的编写方式.

LINQ to Objects和LINQ to SQL之间是否有任何显着差异影响我应该如何编写查询?

Jon*_*eet 3

主要区别是正如你所说,LINQ to SQL 查询被转换为 SQL。这意味着您可以编写一些实际上不可转换或具有一些细微不同语义的代码 - 并且您只能在执行时发现这一点。

例如:

var query = from person in people
            where person.Age == person.GetHashCode()
            select person;
Run Code Online (Sandbox Code Playgroud)

可以正常编译,但在执行时会失败,因为 LINQ to SQL 不知道如何处理GetHashCode().

基本上,我发现 LINQ to SQL 比 LINQ to Objects 更难预测。这并不是说它没有用——这只是一个稍微不同的世界。MS 在让您编写查询方面做得非常出色,这些查询通常只做您期望的事情,但它不能做所有事情。