使用Linq更新字典值

时间:2011-09-29 14:00:19

标签: linq

我将调用AnalyseLinqUpdate()

我认为代码本身很清楚..

我必须找到每个字典值的行为,并将该值替换为我从方法'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来完成......

2 个答案:

答案 0 :(得分:2)

您可以尝试以下方法:

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

答案 1 :(得分:1)

应该这样做

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