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)등을 이용하여 원하는 결과를 도출할 수 있다.
반응형
댓글