如何“压缩”或“旋转”可变数量的列表?

如何“压缩”或“旋转”可变数量的列表?,第1张

如何“压缩”或“旋转”可变数量的列表?

您可以滚动自己的ZipMany实例,该实例手动迭代每个枚举。与

GroupBy
投影每个序列后使用的序列相比,这可能会在较大的序列上表现更好:

public static IEnumerable<TResult> ZipMany<TSource, TResult>(    IEnumerable<IEnumerable<TSource>> source,    Func<IEnumerable<TSource>, TResult> selector){   // ToList is necessary to avoid deferred execution   var enumerators = source.Select(seq => seq.GetEnumerator()).ToList();   try   {     while (true)     {       foreach (var e in enumerators)       {bool b = e.MoveNext();if (!b) yield break;       }       // Again, ToList (or ToArray) is necessary to avoid deferred execution       yield return selector(enumerators.Select(e => e.Current).ToList());     }   }   finally   {       foreach (var e in enumerators)          e.Dispose();   }}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5567190.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-14
下一篇 2022-12-14

发表评论

登录后才能评论

评论列表(0条)

保存