私はIDictionary<string, Country>
タイプのDictionary
を持っていて、Key
は都市名であり、値はEnum
タイプCountry
です。これらのようになります。この辞書に次のC#GroupBy関数をより良くするには?
アイテム:< "バンクーバー"、Country.Canada>、< "シアトル"、Country.US>、< "ニューヨーク"、Country.US>など
I辞書(dictionry)内のすべての項目を値(すなわち国)でグループ化する必要があります。そして、このような出力文字列:
「米国の都市:シアトル、ニューヨーク」 「カナダ都市:バンクーバーは、」ここで
は、私が書いたものです:
public void GroupByCountry(IEnumerable<KeyValuePair<string, Country>> dict)
{
string text = string.Empty;
var groups = dict.GroupBy(p => p.Value, p => p.Key);
foreach (var g in groups)
{
List<string> citiesInGroup = new List<string>();
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));
}
このコードは動作します。しかし、私はそれがより簡潔でエレガントなことができますか?
多くの都市で同じ「鍵」で終わることはできませんでしたか?あるいは、 'ToLookUp'はそのシナリオを扱いますか? – hunter
@ハンター:あなたが意味することは分かりませんが、 'Dictionary 'で始まっていれば、都市ごとに1組しか存在できません。 –
Woohoo、この質問はJonの注目を集めました!私は後であなたの提案を試みます。 – sean717