2010-05-13 146 views
2

我有一個System.Collections.Generic.Dictionary<string, string>包含控制ID和相應的數據列的數據綁定:字典<字符串,字符串>到詞典<控制,對象>使用的IEnumerable <T>。選擇()

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>)來做同樣的事情?

回答

2

當然,但返回的值將是一個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])); 

(未經測試)

+0

我無法弄清楚如何做到這一點是什麼呢?什麼'功能'可以做到這一點? – abatishchev 2010-05-13 00:06:56

+0

@abatishchev:更新了我的答案。 – Heinzi 2010-05-13 00:11:18