Searching for dictionary keys contained in a string array

Viewed 118

I have a List of strings where each item is a free text describing a skill, so looks kinda like this:

List<string> list = new List<string> {"very good right now", "pretty good",
 "convinced me that is good", "pretty medium", "just medium" .....}

And I want to keep a user score for these free texts. So for now, I use conditions:

foreach (var item in list)
        {
            if (item.Contains("good"))
            {
                score += 2.5;
                Console.WriteLine("good skill, score+= 2.5, is now {0}", score);
            }
            else if (item.Contains(low"))
            {
                score += 1.0;
                Console.WriteLine("low skill, score+= 1.0, is now {0}", score);
            }

        }

Suppose In the furure I want to use a dictionary for the score mapping, such as:

Dictionary<string, double> dic = new Dictionary<string, double>
{ { "good", 2.5 }, { "low", 1.0 }};

What would be a good way to cross between the dictionary values and the string list? The way I see it now is do a nested loop:

foreach (var item in list)
        {
            foreach (var key in dic.Keys)
                if (item.Contains(key))
                    score += dic[key];
        }

But I'm sure there are better ways. Better being faster, or more pleasant to the eye (LINQ) at the very least.

Thanks.

4 Answers
Related