锯齿状数组,从List <string> </string>填充它们

时间:2012-12-10 13:33:40

标签: c# list c#-4.0 jagged-arrays

用户在文本框中输入一系列值:

Textbox 1: 10,9,8,7

Textbox 2: 1,2,3,4

我喜欢对这两个字符串进行排序并填充List<string>。一旦排序(已经弄清楚如何做这个部分),id喜欢创建一个像这样的输入的锯齿状数组:

string[][] Arr = new string[2][];

Arr[0] = new string[] { "10", "9", "8", "7" };
Arr[1] = .....

但不是手动输入值,而是ID喜欢使用上面提到的List<string>

这是否可能(到目前为止,我的尝试相当悲惨)?如果没有,有人可能建议一种可能的替代方法吗?

感谢您的时间!

编辑:基于答案,我得到了它的工作。再次抱歉没有说清楚我的意思。

List<string> tempString = new List<string>();
tempString.Add("10,9,8,7");
tempString.Add("1,2,3");

string[][] Arr = new string[2][];

for (int x = 0; x < 2; x++)
{
    string[] values = tempString[x].Split(',').ToArray();

    Arr[x] = values;
}

3 个答案:

答案 0 :(得分:3)

从字符串创建列表:

List<string> list1 = new List<string>(textbox1.Text.Split(','));
List<string> list2 = new List<string>(textbox2.Text.Split(','));

对列表进行排序:

list1.Sort();
list2.Sort();

现在您可以从列表中轻松创建数组:

string[][] Arr = new string[2][];
Arr[0] = list1.ToArray();
Arr[1] = list2.ToArray();

如果您想以其他顺序执行此操作,即首先排序然后拆分,则为:

List<string> list = new List<string>();
list.Add(textbox1.Text);
list.Add(textbox2.Text);
list.Sort();
string[][] Arr = new string[2][];
Arr[0] = list[0].split(',');
Arr[1] = list[1].split(',');

答案 1 :(得分:3)

Arr[0] = textBox1.Text.Split(',');
Arr[1] = textBox2.Text.Split(',');

编辑如果您需要预处理列表,您可以这样做:

var array1 = textbox1.Text.Split(',').OrderBy(x => x).ToArray();
var array2 = textbox2.Text.Split(',').OrderBy(x => x).ToArray();
// extra processing here
string[][] Arr = new string[2][];
Arr[0] = array1;
Arr[1] = array2;

答案 2 :(得分:2)

string[][] Arr = new string[]{textBox1.Text, textBox2.Text} //<--or "tempString"
                    .Select(s => s.Split(','))
                    .ToArray();