Переведите словарь <string, string> в Dictionary <Control, object>, используя IEnumerable <T>.Select () - PullRequest
2 голосов
/ 13 мая 2010

У меня есть System.Collections.Generic.Dictionary<string, string>, содержащий идентификатор элемента управления и соответствующий столбец данных для привязки данных:

var dic = new Dictionary<string, string>
{
    { "Label1", "FooCount" },
    { "Label2", "BarCount" }
};

Я использую это так:

protected void FormView1_DataBound(object sender, EventArgs e)
{
    var row = ((DataRowView)FormView1.DataItem).Row;
    Dictionary<Control, object> newOne = dic.ToDictionary(
        k => FormView1.FindControl(k.Key)),
        k => row[k.Value]);
}

Итак, я использую IEnumerable<T>.ToDictionary(Func<T>, Func<T>).

Можно ли сделать то же самое, используя IEnumerable<T>.Select(Func<T>)?

1 Ответ

2 голосов
/ 13 мая 2010

Конечно, но возвращаемое значение будет IEnumerable<KeyValuePair<Control, object>>, а не Dictionary<Control, object>:

IEnumerable<KeyValuePair<Control, object>> newOne = dic.Select(
    k => new KeyValuePair<Control, object>(FormView1.FindControl(k.Key), 
                                           row[k.Value]));

(непроверенные)

...