繁体   English   中英

在列表中创建列表 C#

[英]Creating a list within a list C#

如果我有 2 个以上的整数列表,有没有办法将这些列表存储在另一个列表中以将其传递给另一个类或方法? 我希望能够单独访问每个列表,但我希望能够将它们全部一起传递。 这将是什么语法以及访问主列表中每个列表的正确方法是什么。 例如,我有这些单独的列表:

List<int> Nums1= new List<int>(new int[] { 6, 76, 5, 5, 6 });
List<int> Nums2= new List<int>(new int[] { 6, 4, 7, 5, 9 });
List<int> Nums3= new List<int>(new int[] { 22, 11, 5, 4, 6 });

然后我想将这些存储在另一个列表中以传递给一个方法,例如:

static public List<int> DoSomething (List<int> Allnums)
{

//My calculations

}

然后我希望能够将它们存储回主列表并将它们返回到我的主列表中。

您可以使用List<List<int>>类型来保存列表列表。

List<List<int>> allNums = new List<List<int>>();

allNums.Add(Nums1);
allNums.Add(Nums2);
allNums.Add(Nums3);

DoSomething(allNums);

//elsewhere
static public List<int> DoSomething (List<List<int>> Allnums)
{

//My calculations

}

对于更高版本的 C#(我相信 C# 6 及更高版本),您可以使用集合初始化符号:

var allNums = new List<List<int>>{ Nums1, Nums2, Nums3 };

这是完全可能的:

static public void DoSomething (List<List<int>> Allnums)
{

//My calculations

}

请注意,没有理由返回 List; 参数指向列表的原始列表。 不过,您必须先将所有列表放入列表中:

List<List<int>> allLists = new List<List<int>>();
allLists.Add(Nums1);
allLists.Add(Nums2);
allLists.Add(Nums3);

DoSomething(allLists);

这取决于,正如已经作为 awnser 给出的那样,您可以使用List<List<int>> 虽然,由于我们使用的是面向对象的语言,并且如果整数列表的数量每次都相同,我会建议一个对象。

像这样的东西:

public class MyIntListObject
{
    public List<int> Output1 {get;set;}
    public List<int> Output2 {get;set;}
}

保存您的清单。 我会建议它的可维护性。

你的方法会变成这样:

static public MyIntListObject DoSomething (List<int> Allnums)
{

//My calculations

}

我有一个类似的场景来创建一个类的列表列表,如 ChildClass。

  public class ChildClass
    {
        public string FieldName { get; set; }
        public string Value { get; set; }
        public string StatusClass { get; set; }
        public string StatusMessage { get; set; }
    }

创建 ChildClass 列表的列表如下:

 List<List<ChildClass>> o = new List<List<ChildClass>> {
            new List<ChildClass>{
           new ChildClass { FieldName = "Name", Value = "Abc", StatusClass = "alert alert-warning", StatusMessage = "This is Name"},
                new ChildClass { FieldName = "Unit Price", Value = "1000", StatusClass = "", StatusMessage = "This is Price"},
               new ChildClass { FieldName = "Type", Value = "Test Type 1", StatusClass = "", StatusMessage = "This is Type"},
               new ChildClass { FieldName = "Status", Value = "true", StatusClass = "", StatusMessage = "This is Status"},
            },
              new List<ChildClass>{
           new ChildClass { FieldName = "Name", Value = "PQR", StatusClass = "", StatusMessage = "This is Name" },
                new ChildClass { FieldName = "Unit Price", Value = "500", StatusClass = "", StatusMessage = "This is Price" },
               new ChildClass { FieldName = "Type", Value = "Test Type 2", StatusClass = "", StatusMessage = "This is Type" },
               new ChildClass { FieldName = "Status", Value = "True", StatusClass = "alert alert-danger", StatusMessage = "This is Status"},
            }
            };
static public List<int> DoSomething (List<int> Allnums)
{

//My calculations

}

应该

static public List<int> DoSomething (List<List <int>> Allnums)
{

//My calculations

}

出什么问题了 :

Tuple<List<int>,List<int>>
//static public List<int> DoSomething (List<int> Allnums)
DoSomething(Nums1.Concat(Nums2).Concat(Nums3).ToList());

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM