2011-09-29 76 views
3

我會打電話給AnalyseLinqUpdate()一個字典值更新使用LINQ

我覺得代碼本身清楚..

我必須找到每一個字典值的行爲和替換的行爲,我從一開始的價值方法 'GiveBehavior'

void AnalyseLinqUpdate() 
{ 
    Dictionary<string, string> rawCollection = new Dictionary<string, string>(); 

    rawCollection.Add("PT-1", "PTC-1"); 
    rawCollection.Add("PT-2", "PTC-1"); 
    rawCollection.Add("PT-3", "PTC-2"); 
    rawCollection.Add("PT-4", "PTC-2"); 
    rawCollection.Add("PT-5", "PTC-3"); 
    rawCollection.Add("PT-6", "PTC-3"); 

    //update here 
    // call GiveBehavior("PTC-1"); 
    //returns a string that needs to be updated in place of "PTC-1" 

} 

string GiveBehavior(string ptc) 
{ 
    StringComparison ignoreCase = StringComparison.OrdinalIgnoreCase; 
    ptc = ptc.Trim(); 

    if (ptc.Equals("PTC-1", ignoreCase)) 
    { 
     return "PTB-1"; 
    } 
    else if (ptc.Equals("PTC-1", ignoreCase)) 
    { 
     return "PTB-2"; 
    } 
    else 
    { 
     return "PTB-3"; 
    } 
} 

目前我還喜歡做:

List<string> keys = rawCollection.Keys.ToList(); 

foreach (string key in keys) 
{ 
    string behavior = GiveBehavior(rawCollection[key]); 
    rawCollection[key] = behavior; 
} 

這是我如何更新字典..
反正是有達可以通過LINQ做...

回答

1

應該這樣做

rawCollection = rawCollection.ToDictionary(item => item.Key, item => GiveBehavior(item.Key)); 
2

你可以嘗試以下方法:

List<string> keys = rawCollection.Keys.ToList(); 
keys.ForEach(key => { rawCollection[key] = GiveBehavior(rawCollection[key]); });