【发布时间】:2019-04-16 02:23:53
【问题描述】:
我在编译时看到了类似zip 的解决方案,已知数量的Lists 大于两个Lists:
public static class MyFunkyExtensions
{
public static IEnumerable<TResult> ZipThree<T1, T2, T3, TResult>(
this IEnumerable<T1> source,
IEnumerable<T2> second,
IEnumerable<T3> third,
Func<T1, T2, T3, TResult> func)
{
using (var e1 = source.GetEnumerator())
using (var e2 = second.GetEnumerator())
using (var e3 = third.GetEnumerator())
{
while (e1.MoveNext() && e2.MoveNext() && e3.MoveNext())
yield return func(e1.Current, e2.Current, e3.Current);
}
}
}
如果您有 List<List<>> 并且想要动态压缩它们,那么正确的代码是什么? 请注意,列表的数量在编译时是未知的。我不想创建 ZipFour、ZipFive 等...
【问题讨论】:
-
那么组合的结果是什么?另一个
List<List<>>,但带有压缩值(我猜有点旋转)? -
T1 = T2 = T3 = Tn 也是?
标签: c# ienumerable