본문 바로가기
Programming/Tips(C++,C#)

C#에서 List를 Dictionary로 (feat. LINQ)

by 곰네Zip 2023. 3. 31.

C#에서 List를 Linq를 사용하여 Dictionary로 만들기.

예를들어 아래와 같은 class가 있다고 하자.

public class MemberInfo{
	public int Level{get; set;}
    public int Score{get; set; }
    public string name{get; set;}
}

이러한 List<MemberInfo> 를, 등급을 기준으로 묶어서 보고싶다면.. 다음과 같이 작성하면 된다.

private Dictionary<int, StudentInfo> convertToDictionary(List<StudentInfo> list){
	var result = list.OrderBy(x => x.Level)
    				 .GroupBy(x => x.Level)
                     .ToDictionary( x=> x.Level, x);
    return result;
}

 만약 저 목록에서 각 level의 평균값을 구하고자 한다면

private Dictionary<int, double> GetAverageScoreByLevel(List<MemberInfo> info){
	var result = info.OrderBy(x => x.Level)
    				 .GroupBy(x => x.Level)
                     .ToDictionary(x=> x.Level,
                     			   x=> x.Average( item => item.Score));
    return result;
}

 같은 방식으로 합계 (sum), 멤버 수(count)등을 이용하여 원하는 결과를 도출할 수 있다.

반응형

댓글