How to make the following C# GroupBy function better?
<p>I have a <code>Dictionary</code> of type <code>IDictionary&lt;string, Country&gt;</code>, whose the <code>Key</code> is name of a city and the Value is an <code>Enum</code> type of <code>Country</code>. </p>

<p>Items in this dictionary would look like these: &lt;"Vancouver", Country.Canada>, &lt;"Seattle", Country.US>, &lt;"New York", Country.US> etc.</p>

<p>I need to group all the items in the dictionry by value (i.e. Country). And output strings like this:</p>

<p>"US Cities: Seattle, New York"
"Canada Cities: Vancouver"</p>

<p>Here is what I've written:</p>

<pre><code>public void GroupByCountry(IEnumerable&lt;KeyValuePair&lt;string, Country&gt;&gt; dict)
{
    string text = string.Empty;
    var groups = dict.GroupBy(p =&gt; p.Value, p =&gt; p.Key);
    foreach (var g in groups)
    {
        List&lt;string&gt; citiesInGroup = new List&lt;string&gt;();
        foreach (string city in g)
        {
            citiesInGroup.Add(ext);
        }
        text += string.Format("{0}: {1}\n", Enum.GetName(typeof(Country), g.Key), string.Join("|", citiesInGroup.ToArray()));
    }
    Log.Info(logCategory, string.Format("Result:\n{0}", text));
}
</code></pre>

<p>This code works. But I am wondering if it can be more concise and elegant?</p>
