C# 什么是linq;“最佳做法”;

C# 什么是linq;“最佳做法”;,c#,linq,C#,Linq,希望在我的下一个项目中使用linq来减轻一些繁重的劳动。在深入了解linq世界之前,我想了解一些关于使用linq的最佳实践的建议。关于EF和linq to sql,我还没有决定。首先,您需要定义“linq”的含义。我将通过问题的其余部分猜测您所问的关于LINQtoSQL的问题 如果您是指Linq to SQL,并且您正在启动一个新项目,那么我认为第一个最佳实践是不这样做,而是使用.NET中的实体框架。它远远优于EF1.0以及Linq到SQL。自从VisualStudio2010和.NET4发布以

希望在我的下一个项目中使用linq来减轻一些繁重的劳动。在深入了解linq世界之前,我想了解一些关于使用linq的最佳实践的建议。关于EF和linq to sql,我还没有决定。首先,您需要定义“linq”的含义。我将通过问题的其余部分猜测您所问的关于LINQtoSQL的问题

如果您是指Linq to SQL,并且您正在启动一个新项目,那么我认为第一个最佳实践是不这样做,而是使用.NET中的实体框架。它远远优于EF1.0以及Linq到SQL。自从VisualStudio2010和.NET4发布以来,所有新项目都应该避免使用LINQtoSQL

  • 我能给您提供的最大的最佳实践是正确使用数据库模型。正确规范化数据库。正确地调整和索引数据库。根据正确创建的数据库构建EF模型,您会很高兴的。如果你试图抄近路,或者你以某种方式将数据库建模为某种非关系对象存储,那么你的生活将充满痛苦和痛苦

  • 确保团队中的每个人都理解延迟执行的概念,以及延迟执行与查询实际生成和执行的关系

  • 理解IQueryable和IEnumerable之间的区别。这与前一点有关,但是当涉及到编写Linq查询时,了解IQueryable的工作原理可以使您的生活更加轻松

  • 了解延迟加载以及它将如何影响查询的性能。在适当的时候使用它,并学习如何策略性地加载对象以获得最佳性能

  • 了解每个查询的频率以及对负载的影响。一些最频繁的查询通常可以通过编译而受益,但大多数情况下不需要这样做


这里查看101个数据类型的LINQ样本


<>我发现这非常重要,因为它可以极大地提高查询的可读性。

< P>避免被懒惰的评价所咬,考虑Jon Wagner的这个博客文章,我在这里引用:

  • 使用“流利的C#”而不是语言扩展
  • 一旦LINQ链制造完成(如果它们将被重复使用),立即“密封”LINQ链
  • 如果要允许合成,则仅返回“打开”链
  • 确保“开放”链返回的语义清晰
  • 如果返回的是开放链,请确保内部代码没有副作用

  • 我想你可能需要先决定。我不确定两者是否有共同的最佳实践。还要注意,LINQ to SQL仅适用于SQL Server/SQL Server Compact数据库。@Roys先生:不完全正确。Devart为Linq到Oracle提供了一个解决方案。一个非常好和紧凑的解释,每一点上的一些参考将不胜感激。