var input = new int[] { 0, 1, 2, 3, 4, 5 };
如何讓他們分成對?
var output = new int[][] { new int[] { 0, 1 }, new int[] { 2, 3 }, new int[] { 4, 5 } };
最好使用LINQ
var input = new int[] { 0, 1, 2, 3, 4, 5 };
如何讓他們分成對?
var output = new int[][] { new int[] { 0, 1 }, new int[] { 2, 3 }, new int[] { 4, 5 } };
最好使用LINQ
input
.Select((value, index) => new { PairNum = index/2, value })
.GroupBy(pair => pair.PairNum)
.Select(grp => grp.Select(g => g.value).ToArray())
.ToArray()
var indexedNumbers = input.Select((number, index) => new { Index = index, Number = number });
var pairs =
from indexedNumber in indexedNumbers
group indexedNumber by indexedNumber.Index/2 into indexedNumberPair
select indexedNumberPair.Select(indexedNumber => indexedNumber.Number);
var arrays = pairs.Select(pair => pair.ToArray()).ToArray();
可能並不適用於你,但你可以使用新的Zip方法在C#4.0
var input = new int[] { 0, 1, 2, 3, 4, 5 };
IEnumerable evens = input.Where((element, index) => index % 2 == 0);
IEnumerable odds = input.Where((element, index) => index % 2 == 1);
var results = evens.Zip(odds, (e, o) => new[] { e, o }).ToArray();
var input = new int[] { 0, 1, 2, 3, 4, 5 };
int i = 0;
var output = input.GroupBy(item => i++/2);
在我看來,這是一種更清潔的解決方案,與公認的方法相比,儘管接受的方法與linq更加一致。 – 2017-02-28 14:34:03
您的例子並不表明0,1是如何關聯的,使他們能夠進行分組。或者你只是將它們按順序分組? – JustLoren 2009-08-17 21:08:10
我想成對連續組合 – 2009-08-17 21:10:18