如何在程序运行时创建List

时间:2009-11-17 13:01:29

标签: c# .net list

当我的程序运行时,它会在一条消息中接收带有Id和数据的消息。

我想为每个Id创建一个新的List,我可以存储来自该Id的数据。 问题是我不知道在程序运行之前我会收到多少Id。我唯一知道的是它很多。所以我不知道是否可能或我应该如何做到这一点。 这是我基本上想要做的事情:

if (!(idlist.Contains(id))){

 idlist.Add(id);
 List<string> id.ToString() = new List<string>();}

4 个答案:

答案 0 :(得分:5)

使用词典:

var myDictionary = new Dictionary<int, List<string>>();
// .....
List<string> myList;
myDictionary.TryGetValue( id, out myList );
if ( null == myList ) {
    myList = new List<string>();
    myDictionary[id] = myList;
}
myList.Add( "hello world" );

答案 1 :(得分:4)

您可以执行以下操作:

Dictionary<int, List<string>> dictionary = new Dictionary<int, List<string>>();
dictionary[newId] = new List<string>();
dictionary[newId].add("Hello!");

字典非常方便!

您也可以这样做:

if(!dictionary.ContainsKey(newId)){
    //Add the new List<string> to the dictionary
}else{
    //Add to the existing List<string> at dictionary[newId]
}

希望这有帮助!

答案 2 :(得分:1)

您可以使用可以存储键值对列表的Dictionary。您的密钥将是id,值将是字符串列表。

Dictionary<int,List<string>> ids = new Dictionary<int,List<string>>();

当您获得ID时,您可以创建一个新条目:

ids[id] = new List<string>();

如果字典中已包含此ID的条目,则该字典将被覆盖。您可以使用ContainsKey进行检查以防止:

if(!ids.ContainsKey(id))
{
    ids[id] = new List<string>();
}

答案 3 :(得分:0)

我不相信你可以按照你的方式创建一个列表。您可能想尝试的是这样的:

IDictionary<int, List<string>> idDictionary = new Dictionary<int, List<string>>()
//wait for messages
...
//handle new message
if (!idDictionary.containsKey(incommingId)){
     idDictionary.add(incommingId, new List<String>())
}
idDictionary[incommingId].add(data);

使用字典来保存所有收到的id的数据列表应该提供良好的查找性能。但是,如果在程序运行时收到数百个不同的ID,则可能会发生这种情况。