作者:月曳柳覀梢 | 来源:互联网 | 2022-11-30 15:28
我正在使用LINQ:
List listA = new List{"a", "b", "c", "d", "e", "f", "g"};
List listB = new List{"1", "2", "3"};
期望的结果:
{"a", "1", "b", "2", "c", "3", "d", "1", "e", "2", "f", "3", "g", "1"}
我试过但失败了:
var mix = ListA.Zip(ListB, (l1, l2) => new[] { l1, l2 }).SelectMany(x => x);
//Result : {"a", "1", "b", "2", "c", "3"}
var mix = ListA.Zip(ListB, (a, b) => new[] { a, b })
.SelectMany(x => x)
.Concat(ListA.Count()
我怎么能用LINQ做到这一点?
1> 小智..:
这是有效的,即使我不确定为什么你需要它作为linq表达式:
var mix = Enumerable
.Range(0, Math.Max(listA.Count, listB.Count))
.Select(i => new[] { listA[i % listA.Count], listB[i % listB.Count] })
.SelectMany(x => x);
这是迄今为止唯一可行的linq方法+1你可以将它缩短为`var mix = Enumerable.Range(0,Math.Max(listA.Count,listB.Count)).SelectMany(i => new [] {listA [i%listA.Count],listB [i%listB.Count]});`