나는 IDictionary<string, Country>
유형의 Dictionary
이며, Key
은 도시 이름이며 값은 유형이 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
@hunter : 무슨 의미인지는 모르겠지만 'Dictionary'로 시작할 경우 어쨌든 도시 당 한 쌍만있을 수 있습니다. –
우후,이 질문에 존의 주목을 받았습니다! 나는 너의 제안을 나중에 시도 할 것이다. – sean717