我有一个数组,并希望把它分解为两件如何将数组拆分为两个数组?
现在: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
New_1:[0, 2, 4, 6, 8]
New_2:[1, 3, 5, 7, 9]
所以采取一个ele并跳过下一个元素。 看起来很简单,但我怎么用C#做到这一点?
非常感谢
我有一个数组,并希望把它分解为两件如何将数组拆分为两个数组?
现在: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
New_1:[0, 2, 4, 6, 8]
New_2:[1, 3, 5, 7, 9]
所以采取一个ele并跳过下一个元素。 看起来很简单,但我怎么用C#做到这一点?
非常感谢
您可以使用LINQ,Enumerable.Where并取得与该有甚至和奇指标元素的数组。
var New_1 = arr.Where((c,i) => i % 2 == 0).ToArray();
var New_2 = arr.Where((c,i) => i % 2 != 0).ToArray();
你可以收集的元素的索引和应用条件检查,如果指数为偶数或奇数,并得到按照阵列。
Enumerable.Where方法(IEnumerable,Func)基于谓词过滤值序列。 每个元素的索引用在谓词函数的逻辑中。 谓词的第一个参数表示要测试的元素。该 第二个参数表示的元素中 源的从零开始的索引,msdn
int[] arr = new int[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
int i = 0;
List<int[]> twoArr = arr.GroupBy(x => i++ % 2).Select(g => g.ToArray()).ToList();
这会起作用,但它不会给OP他想要的结果(两个数组)并且(IMO)的可读性低于Where()'版本 –
@elmugrat如果他想分裂为10,你会创建10数组手动。不,我不会发布*不好的*回答。 –
如果他没有说“分成两份”,我同意你的看法,但由于他只需要两份,我认为提高可读性值得多加一些。 –
如何像
int[] arr = new int[] {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
int[] arr1 = arr.Where((x, i) => i % 2 == 0).ToArray();
int[] arr2 = arr.Where((x, i) => i % 2 == 1).ToArray();
不要忘了'.ToArray()' –
OP具有阵列已经 – Adil
但他想要一个数组作为结果。 'Where()'返回一个'IEnumerable' –