开发者

Update a Dictionary value using Linq

I will call AnalyseLinqUpdate()

I think code itself clear..

I have to find behavior for each dictionary value and replace the value with the behavi开发者_开发知识库or I get from the method '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";
    }
}

Currently I have done like:

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

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

This is how I update the dictionary..

Is there anyway tat can be done via LINQ...


You could try the following:

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


That should do it

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

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜