.net - LINQ(语言集成查询)的优缺点

标签 .net linq

  • LINQ(语言集成查询)的优缺点是什么?
  • 使用 LINQ 的最佳和最坏情况是什么?
  • 您如何从使用 LINQ 中受益或未受益?
  • 哪些数据源从 LINQ 中获益最少和最多?
  • 最佳答案

    我是 LINQ 的忠实粉丝 - 尽管它需要保持正确的观点,而不是被视为 Elixir 。

    优点:

  • 声明式方法使查询更容易理解和更紧凑
  • 可扩展性和表达式树允许对多个源进行大部分一致的查询
  • 甚至进程内查询也可以通过 LINQ to Objects 以外的方式实现 - 例如并行 LINQ 和我自己的 Push LINQ 框架。非常灵活。
  • 对进程内查询非常有用,最容易理解
  • 很高兴能够在字符串等中避免 SQL
  • 默认情况下提供了广泛的运算符,并且可以轻松地为 LINQ to Objects 添加其他运算符
  • 主要为 LINQ 引入的语言功能在其他地方广泛适用(对于 lambdas 来说是的)

  • 缺点:
  • 查询表达式的理解不够好,并且被过度使用。通常,简单的方法调用更短更简单。
  • 供应商之间不可避免的不一致——阻抗不匹配仍然存在,这是合理的但需要理解
  • 总有一些事情你可以在 SQL 中做但在 LINQ 中不能做
  • 不了解发生了什么,很容易写出非常低效的代码
  • 很难编写 LINQ 提供程序。这很可能是不可避免的,但我们将不胜感激 Microsoft 提供的更多指导。
  • 对于大多数开发者来说,这是一种新的数据访问思维方式,需要时间去理解才能渗透
  • 不是专门的 LINQ,而是与之相关的 - 在 C# 中发现扩展方法的方式不够细粒度
  • 一些运算符“缺失”,尤其是 OrderBy 的等价物对于订购以外的事情 - 例如查找具有属性最大值的项
  • 延迟执行和流式传输知之甚少(但有所改进)
  • 由于延迟执行和流式传输,调试可能非常棘手
  • 在某些特定情况下,LINQ 可能比手动代码慢得多。您越了解内部工作原理,就越能更好地预测这一点。 (当然,如果性能对您很重要,您应该对它进行适当的测试。)

  • 我发现在处理进程内查询时最好。它们很容易预测、理解和扩展。 LINQ to XML 和 Parallel LINQ 等补充技术非常棒。 LINQ to Objects 几乎可以在任何地方使用。

    LINQ to SQL 等在它们合适的地方非常好,但它们更难理解并且需要更多的专业知识。它们也仅适用于代码的某些区域。

    关于.net - LINQ(语言集成查询)的优缺点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/271384/

    相关文章:

    c# - AutoScaleMode.Font 和动态添加的控件

    c# - 为什么 .NET 中的 $ 多行正则表达式不匹配 CRLF?

    c# - 在 MVC3 Razor 中使用 LinQ to Sql 将 Customer.customerID 输入 Advert.cutomerID

    c# - 如何处理动态表名

    .net - 如何使用 linq 从父对象检索孙对象

    c# - 如何重新启动 WPF 应用程序?

    c# - 您会相信 Mono 作为建立初创公司的平台吗?

    c# - 何时在 Linq 中使用 Cast() 和 Oftype()

    c# - 使用 Linq to XML 检索 xml 部分

    xml - 如何从 XML 文件中的特定节点获取值?