C# 如何将阵列拆分为两个阵列?
我有一个数组,希望将其拆分为两个: 现在:C# 如何将阵列拆分为两个阵列?,c#,arrays,split,C#,Arrays,Split,我有一个数组,希望将其拆分为两个: 现在:[0,1,2,3,4,5,6,7,8,9] 新建\u 1:[0,2,4,6,8] 新建\u 2:[1,3,5,7,9] 所以取一个元素,跳过下一个元素。 看起来很简单,但我怎么能用C#做到呢 非常感谢您可以使用linq,并获得具有偶数和奇数索引的元素的数组 您可以获取集合元素的索引,并应用条件检查索引是偶数还是奇数,并根据条件获取数组 可枚举。其中方法(IEnumerable,Func)基于谓词过滤值序列。 在谓词函数的逻辑中使用每个元素的索引。 谓词的
[0,1,2,3,4,5,6,7,8,9]
新建\u 1:[0,2,4,6,8]
新建\u 2:[1,3,5,7,9]
所以取一个元素,跳过下一个元素。
看起来很简单,但我怎么能用C#做到呢
非常感谢您可以使用linq,并获得具有偶数和奇数索引的元素的数组
您可以获取集合元素的索引,并应用条件检查索引是偶数还是奇数,并根据条件获取数组
可枚举。其中方法(IEnumerable,Func)基于谓词过滤值序列。
在谓词函数的逻辑中使用每个元素的索引。
谓词的第一个参数表示要测试的元素。这个
第二个参数表示内部元素的从零开始的索引
来源:
您可以使用linq,并获得具有偶数和奇数索引的元素的数组
您可以获取集合元素的索引,并应用条件检查索引是偶数还是奇数,并根据条件获取数组
可枚举。其中方法(IEnumerable,Func)基于谓词过滤值序列。
在谓词函数的逻辑中使用每个元素的索引。
谓词的第一个参数表示要测试的元素。这个
第二个参数表示内部元素的从零开始的索引
来源:
int[]arr=newint[]{0,1,2,3,4,5,6,7,8,9};
int i=0;
列出twoArr=arr.GroupBy(x=>i++%2);
int[]arr=新的int[]{0,1,2,3,4,5,6,7,8,9};
int i=0;
列出twoArr=arr.GroupBy(x=>i++%2);
像这样的东西怎么样
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();
像这样的怎么样
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()
,但他想要一个数组作为结果Where()
返回一个IEnumerable
谢谢@elmugrat,你太好了。别忘了.ToArray()
但是他想要一个数组作为结果Where()
返回一个IEnumerable
谢谢@elmugrat,你真是太好了。这会起作用,但不会给OP他想要的结果(两个数组),而且(IMO)可读性不如Where()
version@elmugrat如果他想拆分为10个数组,您会手动创建10个数组吗。不,我不会发布一个不好的答案。如果他没有说“一分为二”,我会同意你的看法,但因为他只想要两个,我认为改进的可读性值得多加一行。这会起作用,但不会给OP他想要的结果(两个数组),而且(依我看)可读性不如Where()
version@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();