是否存在可以通过使用给定名称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);
有什么简单的方法可以完成这项工作吗? 非常感谢。
答案 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