반응형
ToLookup는 컬렉션(List, Array, Dictionay)의 요소중에서 특정 데이터의 키값을 가지고 데이터를 가져올때 사용됩니다.
샘플코드에서는 학생의 점수를 클래스의 키값으로 각 클래스에 속한 학생의 점수를 가져올 수 있습니다.
private class TestResult
{
/// <summary>
/// 소속 클래스
/// </summary>
public string Class { get; set; }
/// <summary>
/// 성명
/// </summary>
public string Name { get; set; }
/// <summary>
/// 점수
/// </summary>
public int Score { get; set; }
/// <summary>
/// 출력문자열
/// </summary>
/// <returns></returns>
public override string ToString()
{
return string.Format("Class:{0}, Name:{1}, Score:{2}", Class, Name, Score);
}
}
static void Main(string[] args)
{
// 테스트결과 데이터 생성
TestResult[] testResults = new TestResult[]
{
new TestResult() { Class = "A", Name = "KIM", Score = 100 },
new TestResult() { Class = "A", Name = "LEE", Score = 90 },
new TestResult() { Class = "B", Name = "SHIN", Score = 80 },
new TestResult() { Class = "C", Name = "JEON", Score = 70 },
new TestResult() { Class = "D", Name = "HONG", Score = 60 },
new TestResult() { Class = "D", Name = "YUN", Score = 50 }
};
// 테스크결과 Array부터 Class별 데이터를 추출
ILookup<string, TestResult> results = testResults.ToLookup(param => param.Class);
// 테스트결과 Array값을 전부출력
System.Console.WriteLine(" Persons\n{0}", testResults.Value());
//class별로 그룹지어 결과를 표시
foreach (var item in results)
{
System.Console.WriteLine(" Class:{0}", item.Key);
foreach (var person in item)
{
System.Console.WriteLine("\t{0}", person);
}
}
// 입력대기
System.Console.ReadKey();
}
/// <summary>
/// 텍스트 값 공통처리
/// </summary>
public static string Value(this IEnumerable values)
{
string value = string.Empty;
foreach (var item in values)
{
value += string.Format(" [{0}], ", item) + System.Environment.NewLine;
}
return value.Remove(value.LastIndexOf(','), 1);
}
결과값
반응형
'C#' 카테고리의 다른 글
LINQ Repeat 사용법 (0) | 2021.08.13 |
---|---|
LINQ Range 사용법 (0) | 2021.08.09 |
LINQ Intersect 사용법 (0) | 2021.07.28 |
LINQ Except 사용법 (0) | 2021.07.27 |
LINQ BinarySearch 사용법 (0) | 2021.07.26 |
댓글