2016-11-05 95 views
1

我想将一个数组的一部分复制到一个新的数组中,并寻找一个解决方案,但这些解决方案是编码分配或不是我正在寻找。这可能是我在谷歌搜索错误,但很抱歉,如果这个答案很容易找到,我找不到它。如何将数组的一部分复制到新数组。 C#

我有数组A

string[] A = {"A", "B", "C", "D", "E", "F"};

我尝试使用

string[] B = new string[2]; Array.Copy(A, 0, B, 0, 2)

复制到阵列B的它的部分,但此只是给数组A的固定部分背面所以阵列B由“A”和“B”组成。

是有也给阵列B值0,1,4,5,所以它给我“A”“B”“E”和“F”的方式

也对不起英文不好它是不是我的母语,我试图在谷歌搜索:

我的第一次搜索的结果分配让我到如何获得二维数组,但这不是我所需要的页面。 “如何将一个数组的2个部分复制到一个新的数组”导致我array.copy标记 之后,我试图查找“array.copy手册”,但只是让我说它不能用数组.copy所以没有人知道如何在一个紧凑的代码中做到这一点?

再次。对不起,如果这个答案是明显的。

+0

看看:http://stackoverflow.com/questions/733243/how-to-copy-part-of-an-array-to-another-array-in-c –

回答

3

是有也给阵列B值0,1,4,5,所以它给我 “A” “B” “E” 和 “F”

没有一种方法,因为B是一组string s。但是,您可以用独立数组索引的开始,并根据他们从A复制:

int[] indexes = new[] {0, 1, 4, 5}; 
string[] B = indexes.Select(i => A[i]).ToArray(); 
+1

很好的解决方案。只有在绑定检查时才可能出错。 'int [] = new [] {0,1,15};'可能是:'string [] B = indexes.Where(i => i A [i]) .ToArray();' –

+0

@JeroenvanLangen OP是构造索引数组的一个,所以观察它的适当边界。 – dasblinkenlight

+0

你的工作更专业,我现在刚刚找到了一个解决方案,但不好使用你的,并把它放在我的评论下,以供参考,谢谢。 –

1

的一种方法是:

var indices = new[] { 0, 1, 4, 5 }; 
var copy = A.Where((s, i) => indices.Contains(i)).ToArray(); 
+0

在这种情况下,最好使用HashSet的索引,而不是整数数组,因为包含对数组不太快(每次都进行全搜索) –

+1

哈希集在使用5个项目时不是有用的,但是我会升级它,我不知道数字。 –

+0

当然,5项无关紧要。只是想到了一个更“通用”的情况下:) –

0

嗯,我只是去与我的代码角落找寻booging和这个工程我想:

string[] A = {"A", "B", "C", "D", "E", "F"}; string[] B = new string[4]; Array.Copy(A, 0, B, 0, 2) Array.Copy(A, 4, B, 2, 2)

它给阵列B值ABE和F

+0

我几乎不能相信你可以把4的值在一个长度为3的数组:) :) –

+0

哦,对不起hihi它的作品,它必须是4虐待编辑它。 –

相关问题