如何使用给定名称List <string>初始化Multiple List <string>

时间:2018-09-06 08:50:09

标签: c# string list dictionary

是否存在可以通过使用给定名称List来初始化Multiple List的功能? 例如:

List<string> nw_TCList = new List<string>();
List<string> ia_TCList = new List<string>();
List<string> st_TCList = new List<string>();
List<string> ud_TCList = new List<string>();
List<string> mb_TCList = new List<string>();

我想创建thoese列表,现在我有一个包含thoese名称的列表:

List<string> myNameList = new List<string>() 
{
    "nw_TCList", 
    "ia_TCList", 
    "st_TCList", 
    "ud_TCList", 
    "mb_TCList" 
};

我想做这样的事情:

for (int i = 0; i < myNameList.Count(); i++)
{
   List<string> myNameList[i] = new List<string>();
}

此外,假设我有一个字典myDic<sting,List<string>>,我有一个密钥列表List<string> myKeys和我刚创建的许多List<string>。我想将它们添加到字典中,如下所示:

myDic.Add(myKeys[0], nw_TCList);
myDic.Add(myKeys[1], ia_TCList);
myDic.Add(myKeys[2], st_TCList);
myDic.Add(myKeys[3], ud_TCList);
myDic.Add(myKeys[4], mb_TCList);

有什么简单的方法可以完成这项工作吗? 非常感谢。

3 个答案:

答案 0 :(得分:3)

您可以遍历名称,并相应地在字典中添加一个条目:

foreach(var name in new []{ "list", "names", "here" })
{
  myDic[name] = new List<string>();
}

答案 1 :(得分:2)

您可以删除所有多余的声明列表,并将它们收集在字典中。如果列表中已经有所有名称可用作键,则可以使用ToDictionary方法创建一个包含空列表和相应键的字典:

List<string> myNameList = new List<string>() 
{
    "nw_TCList", 
    "ia_TCList", 
    "st_TCList", 
    "ud_TCList", 
    "mb_TCList" 
};

Dictionary<string, List<string>> myDictionary = myNameList.ToDictionary
       (
           key => key, // this means that the current element in myNameList will serve as the key
           value => new List<string>() // this means that for the current element in myNameList a new List<string> will be created as the value
       );

现在您可以通过以下方式访问列表:

List<string> nw_TCList = myDictionary[myNameList[0]];

编辑:

更健壮的方法是使用enum作为名称。这样,您可以让编译器检查拼写。声明一个枚举:

public enum ListNames
{
    nw_TCList,
    ia_TCList,
    st_TCList,
    ud_TCList,
    mb_TCList
}

现在将其用作字典中的键。现在,字典的结构看起来有些不同。您可以使用Enum.GetValue方法获取枚举的所有值。

Dictionary<ListNames, List<string>> myDictionaryRobust = Enum.GetValues(typeof(ListNames))
                             .Cast<ListNames>()
                             .ToDictionary(key => key, value => new List<string>());

下次使用这种方法时,您需要更多的列表,只需扩展枚举,字典中将自动添加一个额外的列表和正确的名称!

答案 2 :(得分:0)

#import "ViewController.h" @interface ViewController () @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; NSMutableDictionary *mutableDict = [[NSMutableDictionary alloc] initWithObjectsAndKeys: @"1123323244",@"Aadhar", @"<null>",@"AddressProofCopy", nil]; NSArray * array = [NSArray arrayWithObject:mutableDict]; for(NSDictionary *dic in array) { for (NSString *key in dic.allKeys) { if ([[dic valueForKey:key] isEqualToString:@"<null>"]) { [mutableDict setObject:@"" forKey:key]; } } } NSLog(@"Updated dict - %@", mutableDict); } @end 相同,只是一行

foreach