我尝试通过键获取列表中的值。我将列表从一个表单发送到另一个表单。这是windows表单应用程序请参阅我的代码:
/* 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用户Sriram Sakthivel
!解决方案:
/* 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"];
}
答案 0 :(得分:5)
如果您需要通过key
访问值,则应使用密钥集合,例如Dictionary。列表只能通过索引访问,它没有定义一个以字符串作为参数的索引器。
除此之外,默认情况下密钥区分大小写。如果您需要不敏感密钥,可以use this。
答案 1 :(得分:1)
如果您不关心案例,可以在设置或使用密钥时使用String.ToLower或String.ToUpper方法。
如果您想通过Dictionary<String, Int32>
访问您的值,则应使用string index:
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();
}
答案 2 :(得分:0)
如果你想按键查找,你不需要
List<KeyValuePair<string, int>>
你想要一个
Dictionary<string, int>
。因此,请替换List<KeyValuePair<string, int>>
的所有出现,并且如上所述,您的密钥区分大小写。
for Lists [n]索引器想要一个int并用于获取List中的第n个项
答案 3 :(得分:0)
你应该为此使用一个字典,它通过散列键来优化这一点,以便更快地检索。
也就是说,如果你想要一个列表,一个选项就是对它执行一个linq查询。
_list.Where(p => p.Key == "cat");