使用Key在ComboBox中选择KeyValuePair

时间:2014-02-28 22:51:16

标签: c# combobox keyvaluepair

我在组合框中有几个键值对。

this.cbEndQtr.Items.Clear();
this.cbEndQtr.Items.Add(new KeyValuePair<int, string>(1, "Test1"));
this.cbEndQtr.Items.Add(new KeyValuePair<int, string>(2, "Test2"));

通过传入密钥选择传递的最简单方法是什么。例如:

this.cbEndQtr.SelectedItem = 2;

2 个答案:

答案 0 :(得分:3)

我认为你可以像这样使用LINQ

var key = 2; // get key from somewhere

var items = this.cbEndQtr.Items.OfType<KeyValuePair<int, string>>()
             .Select((item,index) => new { item, index);

var index = items.Where(x => x.item.Key == key).Select(x => x.index).First();        

this.cbEndQtr.SelectedIndex = index;

答案 1 :(得分:3)

这是一种蛮力方法:

void selectByKey(int key)
{
    foreach (var item in cbEndQtr.Items)
        if (((KeyValuePair<int, string>)item).Key == key) 
        {
            cbEndQtr.SelectedItem = item;
            break;
        }
}

我刚刚找到了这一行方法:

cbEndQtr.SelectedItem = cbEndQtr.Items.OfType<KeyValuePair<int, string>>().ToList().FirstOrDefault(i => i.Key == key);

虽然如果找不到比赛,任何事都不会改变。