将List <int>转换为List <list <int>&gt; </list <int> </int>

时间:2013-04-10 09:01:10

标签: c# .net list collections

我可以在c#中将List<int>转换为List<List<int>>吗? 当我使用这样的结构时

List<int>element=new List<int>();
List<List<int>>superElement= new List<List<int>>(element);

我遇到了错误,但我可以用另一种方式做到这一点吗?

6 个答案:

答案 0 :(得分:12)

你可以这样做:

List<List<int>> superElement = new List<List<int>>();
superElement.Add(element);

答案 1 :(得分:8)

List<int>element=new List<int>();
List<List<int>>superElement= new List<List<int>> { element };

那会有用。您无法在构造函数中传递列表。

答案 2 :(得分:7)

试试这个:

var element = new List<int>();
var superElement = new List< List<int> >(){ element };

答案 3 :(得分:5)

是。您可以使用集合初始值设定项

List<int> element = new List<int>();
List<List<int>> superElement = new List<List<int>> { element };

http://msdn.microsoft.com/en-gb/library/vstudio/bb384062.aspx

答案 4 :(得分:4)

如果您只想初始化List,那么

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

工程;如果你想让它最初包含一个(空)元素,那么

List<List<int>>superElement= new List<List<int>>{element};

会这样做。

答案 5 :(得分:3)

由于我不相信其他答案确实付出了很多努力,我将发布我认为更完整和有用的答案。

首先,为了完整起见,我将展示如何实现实际尝试的目标。要创建列表列表,您可以执行以下操作:

List<int> element = new List<int>();
List<List<int>> superElement = new List<List<int>>();
superElement.Add(element);

但就目前而言,为什么你想要这样做并没有多大意义,经过一些评论探讨(希望它没有受到伤害)我们发现你想要配对一个ID整数列表。我建议采取不同的方法。

就个人而言,我会创建一个类来保存我的数据,然后为这些项创建一个List,如下所示:

public class MyData
{
    public int ID {get; set;}
    public List<int> MyValues {get;set;}

    public MyData()
    {
        MyValues = new List<int>();
    }
}

然后你可以这样做:

List<int> element = new List<int>();
MyData data = new MyData();
data.ID = 1;
data.MyValues = element;

List<MyData> superElement = new List<MyData>();
superElement.Add(data);

允许这样查询:

MyData data1 = superElement.SingleOrDeafult(x => x.ID == 1);
List<int> element = data1.MyValues;

假设您有Linq可用。


另一种方法可能是使用字典,如下所示:

Dictionary<int, List<int>> superElement = new Dictionary<int, List<int>>();
superElement.Add(1, element);

其中1是一个ID,您可以这样调用:

List<int> element = superElement[1];