在开始使用LINQ时,人们犯的最大错误是什么?

Eve*_*ien 34 .net linq

人们在第一次使用LINQ时遇到的根本误解是什么?

例如,他们认为当它真的是别的时候它是一回事吗?

并且,是否有一些最佳实践来避免这些错误?

Ada*_*son 93

它应该用于一切.

  • 你能举例说明什么时候不应该使用吗?我想我还在"尽可能使用它"阶段. (3认同)
  • 我看到很多程序员过度使用隐式类型的局部变量. (2认同)
  • 然而,尝试这样做是非常有趣的:P ...此外,当一个同事问一个问题而不是想出一个实际的答案时,更容易说"只使用linq"...试试吧,生病了保证你会工作......:P ......他们几个小时都不会问另一个问题,可能主要是因为弄清楚如何用linq酿造咖啡毕竟是一项艰巨的任务;)...... (2认同)

Ric*_*ett 27

无法理解(或存在!)之间的差异:

.First()
.FirstOrDefault()
.Single()
.SingleOrDefault()
Run Code Online (Sandbox Code Playgroud)

不了解延期执行.

  • +1注意单身.我一直在使用First并评论"//只能有一个". (5认同)

Sco*_*ein 22

它只涉及LINQ to SQL

  • 完全同意.LINQ to XML和LINQ to objects非常棒. (6认同)

The*_*TXI 16

人们在使用LINQ时犯下的最大错误与人们尝试使用任何一种技术时的错误相同,这种技术基于他们没有任何良好基础的技术.

如果您无法理解正确/高效的数据库查询,那么您将无法使用LINQ.

如果你无法理解ADO.NET和数据访问的基本原理,你可能会搞砸了.

人们认为通过使用LINQ,它将允许它们沿用,但它不会.

  • @TheTXI你的答案通过假设Linq = Linq TO SQL来演示经典的LINQ错误.有关详细信息,请查看J. Skeets C#in Depth. (5认同)
  • 如此真实,那些甚至不了解事务的人经常会犯LINQ最愚蠢的错误(即重用查询,因为他们没有获得IQueryable的懒惰性质,也会占用数据库服务器......) (2认同)

Eve*_*ien 6

我在LINQ to SQL中看到的一个基本问题是不了解DataContext.它是一个工作单元对象,应该为每个工作单元重新创建.


Nir*_*ran 5

想到的事情是

  • 它必须更慢,更好地使用普通的C#
  • 尝试在简单的C#更易读/可管理的地方使用它

  • 这两点都非常好.我最近在评论之前看到了十几行代码,这是为了提高性能.我在它上面运行了一个基准测试,向作者展示了一行LINQ语句实际上比他所拥有的优化循环运行得更快. (3认同)