1

コンボボックスにいくつかの 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;
4

2 に答える 2

4

以下はブルート フォース アプローチです。

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

そして、この1行のアプローチを見つけました:

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

一致が見つからない場合でも、何も変わりません。

于 2014-02-28T22:57:10.763 に答える
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;
于 2014-02-28T22:56:06.610 に答える