我想从现有阵列中创建一个新阵列

时间:2015-09-02 12:11:15

标签: c# .net arrays

我今天的问题是从现有阵列创建阵列。 我的父母"数组包含两个字符的元素。 我的新数组元素应包含来自" parent"的20个元素。阵列。

示例:

<?xml version="1.0" encoding="UTF-8"?>

3 个答案:

答案 0 :(得分:1)

听起来好像一个简单的LINQ语句可以满足你的需要:

var myArr = parent.Take(20).ToArray();

这将选择parent - 数组的20个第一个元素。

编辑:要对parent中的所有元素执行此操作,请将其条目循环:

List<string> result= new List<string>();
while(parent.Any()) {
    result.Add(String.Join("", parent.Take(20).ToArray());
    parent = parent.Skip(20).ToArray();
}

最后使用result.ToArray将列表转换回数组。

答案 1 :(得分:1)

使用枚举的一些扩展功能,你可以在这里走很长的路。

Skip

此函数遍历数组,获取20个元素(如果没有剩下20个元素,则更少),并将它们合并为一个字符串,并将该字符串添加到列表中。我使用String.Join方法来连接字符串。这很好用。

Take函数和IEnumerable函数是childArray的扩展函数,并按照他们的意思行事。

编辑:我确实假设您的源数组较长,并且可能包含多个需要移动到parentArray的20个元素的块

EDIT2:如果您的var builder = new Text.StringBuilder(); List<string> result = new List<string>(); for (int cursor = 0; cursor < parentArray.Length; cursor++) { if (builder.Length > 0 && (cursor % 20) == 0) { result.Add(builder.ToString()); builder.Length = 0; } builder.Append(parentArray[cursor]); } /* At this point you can choose to add the remaining elements to the list or not. */ if (builder.Length > 0) { result.Add(builder.ToString()); } string[] childArray = result.ToArray(); 中有大量值,您可能希望采用不同的方式,以获得更多性能。在这种情况下,我建议使用StringBuilder

{{1}}

答案 2 :(得分:0)

您可以在父数组上创建for循环,并将数组内的元素添加到如下字符串中

String str="";
for (int i=0;i<count(parent);i++){
   str+=parent[i].tostring();
}

然后创建一个新的字符串数组并在第一个索引处放入str变量... 希望这可以帮助你,如果这是你要求的。