将字符串添加到二维列表上的第一个维度

时间:2016-01-15 08:46:34

标签: c# .net list

我创建了一个二维List。我想使用for循环为两个维度添加两个不同的字符串。但问题是,Add有任何选项可以在第一维中保存我的字符串。愿任何人都能帮忙吗?

        List<Tuple<int, List<string>>> List_type1 = new List<Tuple<int, List<string>>>();
        List<Tuple<int, List<string>>> List_type2 = new List<Tuple<int, List<string>>>();            
        int indx1;
        int indx2;
        List<TreeNode> IndexList1 = new List<TreeNode>();
        IndexList1 = FindIndex(treeView1.Nodes, IndexList1);
        indx1 = IndexList1[0].Index;

        foreach (TreeNode node1 in nodes1)
        {
            for (int i = 0; i < actions1.Count; i++)
            {
                List_type1.Add(new Tuple<int, List<string>>(i, new List<string>()));
                TreeNode str1 = node1.Nodes[indx1].Nodes[i];
                string TypeAction1 = actions1[i].Attributes["type"].Value;
                string NameAction1 = actions1[i].Attributes["name"].Value;
                List_type1[i].Item1.Equals(TypeAction1);
                List_type1[i].Item2.Add(NameAction1);
            }
        }

其中nodes1TreeNodeCollectionFindIndex找到TreeNodes中的节点数。

3 个答案:

答案 0 :(得分:1)

当你这样做的时候

List_type1[i].Item1.Equals(TypeAction1);

列表为空。你应该添加新的元组然后再进行比较。但你的比较是无用的?因为不使用它的结果。

另一种方法是在循环之前初始化List。

或者你可能会混淆两行代码而你的意思是:

List_type1[i].Item2.Add(NameAction1);
List_type1[i].Item1.Equals(TypeAction1);

但无论如何,第二行代码毫无意义。

答案 1 :(得分:1)

我发现它可能如下:

        List<Tuple<int, List<string>, List<string>>> List_type1 = new List<Tuple<int, List<string>, List<string>>>();
        foreach (TreeNode node1 in nodes1)
        {
            for (int i = 0; i < actions1.Count; i++)
            {
                List_type1.Add(new Tuple<int, List<string>, List<string>>(i, new List<string>(), new List<string>()));
                TreeNode str1 = node1.Nodes[indx1].Nodes[i];
                list1.Add(str1);
                string TypeAction1 = actions1[i].Attributes["type"].Value;
                string NameAction1 = actions1[i].Attributes["name"].Value;
                List_type1[i].Item2.Add(TypeAction1);
                List_type1[i].Item3.Add(NameAction1);
            }
        }

或者另一种有用的方法是创建array

        string[,] Match_result = new string[list1.Count, 2];
        foreach (TreeNode node1 in nodes1)
        {
            for (int i = 0; i < actions1.Count; i++)
            {
                TreeNode str1 = node1.Nodes[indx1].Nodes[i];
                list1.Add(str1);
                string TypeAction1 = actions1[i].Attributes["type"].Value;
                string NameAction1 = actions1[i].Attributes["name"].Value;
                Match_result[i, 0] = TypeAction1;
                Match_result[i, 1] = NameAction1;
            }
        }

答案 2 :(得分:0)

在行中:

List_type1[i].Item1.Equals(TypeAction1);

您通过索引调用对象,但列表为空。