【问题标题】:Benefits of manual lookup over joining in LINQ?与加入 LINQ 相比,手动查找的好处?
【发布时间】:2011-03-09 13:57:13
【问题描述】:

构造和使用手动查找 (ILookup<T>) 方法是否比在 LINQ 中的本地 IEnumerable<T> 序列上使用 JoinGroupJoin 连接更快?

我在某处读到编译器实际上将JoinGroupJoin 的内部序列转换为ILookup<T>

单独使用ILookup<T> 有什么好处?

【问题讨论】:

  • 虽然这个问题很有趣,但对我来说这似乎是过早的优化。如果您正在编写的代码对性能至关重要,那么您应该对其进行监控。如果速度够快,继续下一个任务。
  • 一些示例代码会让你的问题更清楚。
  • @Stephen - 我试图弄清楚这种方法的优缺点,如果我在这里所说的实际连接被转换为查找
  • @Ian - 我稍后会添加一些代码来说明我想说什么
  • @Philipe - LINQ to SQL 不是这里的主题,我知道 IQueriable 被解释为表达式树并在运行时转换为 SQL。主题是 IEnumerable,即加入本地集合,如果它们真正使用 ILookup。

标签: c# linq performance


【解决方案1】:

这取决于。如果您正在使用基于 DataContext 的对象,则连接会通过 select 语句一直向下转换到 SQL 服务器中。如果它是 POCO(或更具体地说是普通旧 CLR 集合)或其他东西,那么是的,它被用作 ILookup。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-09-20
    • 2011-06-08
    • 1970-01-01
    • 1970-01-01
    • 2010-10-17
    • 1970-01-01
    • 1970-01-01
    • 2016-06-19
    相关资源
    最近更新 更多