假设您有一个大型数据集,该数据集可能会或可能不会被特定条件过滤,而这些条件的计算可能是密集的。在未经过滤的情况下,元素按该条件的值进行分组 - 该条件仅计算一次。
然而,在过滤已发生的情况下,尽管随后的代码仍希望看到一个
除了实现自己的提供
然而,在过滤已发生的情况下,尽管随后的代码仍希望看到一个
IEnumerable<IGrouping<TKey, TElement>>
集合,但执行 GroupBy
操作并导致每个元素的条件被重新评估第二次是没有意义的。相反,我想通过适当地包装过滤结果来创建一个 IEnumerable<IGrouping<TKey, TElement>>
,从而避免再次评估条件。除了实现自己的提供
IGrouping
接口的类之外,是否还有其他方法可以实现此优化?是否有现有的 LINQ 方法支持此操作,以便给出 IEnumerable<IGrouping<TKey, TElement>>
结果?是否有其他我没有考虑过的方法?