Cannot get the value from list key C#
我试着用它们的键从列表中获取值。我把清单从一张表格发送到另一张表格。这是Windows窗体应用程序。请参阅我的代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | /* First form! */ var list1 = new List<KeyValuePair<string, int>>(); list1.Add(new KeyValuePair<string, int>("Cat", 1)); form2 f3 = new form2(connection , list1); /* Form2 */ private IList<KeyValuePair<string, int>> _theList; public editAccount(string connection, List<KeyValuePair<string, int>> arr) { InitializeComponent(); _theList = arr; label1.Text = _theList["Cat"]; } |
我想这显然是我想做的,所以任何帮助都是伟大的!
解决方法:多亏了StackOverflow用户
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | /* First form*/ Dictionary<string, string> openWith = new Dictionary<string, string>(); openWith.Add("cat","test"); editAccount f3 = new editAccount(connection, openWith); /* Form 2 */ private Dictionary<string, string> _theList; public editAccount(string connection, Dictionary<string, string> arr) { InitializeComponent(); _theList = arr; label1.Text = _theList["cat"]; } |
如果需要通过
除此之外,默认情况下键是区分大小写的。如果你需要一把不敏感的钥匙,你可以用这个。
如果不关心大小写,可以在设置或使用键时使用string.tolower或string.toupper方法。
如果要通过字符串索引访问值,还应使用
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | var list1 = new Dictionary<string, int>(); list1.Add(new KeyValuePair<string, int>("Cat".ToUpper(), 1)); form2 f3 = new form2(connection , list1); /* Form2 */ private IDictionary<string, Int32> _theList; public editAccount(string connection,IDictionary<string, Int32> arr) { InitializeComponent(); _theList = arr; label1.Text = _theList["cat".ToUpper()].ToString(); } |
您应该为此使用一个字典,它通过散列键进行优化,以便更快地检索。
也就是说,如果您想要一个列表,一个选项是对它执行一个LINQ查询。
1 | _list.Where(p => p.Key =="cat"); |
如果你想用钥匙查东西,你就不需要你想要一个
对于列表,[n]索引器需要一个int,用于获取列表中的第n个项。