【发布时间】:2009-07-09 09:06:12
【问题描述】:
假设您有一个大型数据集,该数据集可能会或可能不会被数据集元素的特定条件过滤,这些条件可能需要大量计算。在未过滤的情况下,元素按该条件的值分组 - 条件计算一次。
然而,在过滤已经发生的情况下,虽然后续代码仍然期望看到一个IEnumerable<IGrouping<TKey, TElement>> 集合,但是执行一个GroupBy 操作会导致条件被重新设置是没有意义的- 对每个元素进行第二次评估。相反,我希望能够通过适当地包装过滤结果来创建IEnumerable<IGrouping<TKey, TElement>>,从而避免再次评估条件。
除了实现我自己的提供IGrouping 接口的类之外,还有其他方法可以实现这种优化吗?是否有现有的 LINQ 方法来支持这一点,这会给我IEnumerable<IGrouping<TKey, TElement>> 结果?还有其他我没有考虑过的方法吗?
【问题讨论】:
标签: c# linq optimization