문자열 배열 준비하기
먼저 다음과 같은 문자열 배열이 있다고 가정해 보겠습니다.
string[] arr = { "Java", "HTML", "CSS", "JavaScript"};이 배열에서 문자 수가 가장 많은 문자열을 찾으려면 LINQ의 Aggregate 메서드에 람다 식을 함께 사용하면 됩니다.
Aggregate 메서드의 동작 원리
Aggregate 메서드는 세 개의 인수를 받습니다.
1. 시드 값(seed): 누적 연산의 시작점이 되는 값으로, 여기서는 “jQuery”입니다.
2. 누적 함수(func): 배열의 각 요소를 순회하며 호출되는 람다 식입니다. 현재까지의 최장 문자열(longest)과 다음 요소(next)의 길이를 비교하여 더 긴 쪽을 반환합니다.
3. 결과 선택자(resultSelector): 최종 누적 결과를 원하는 형태로 변환하는 함수로, 여기서는 소문자로 변환하는 str => str.ToLower()가 적용됩니다.
즉, 배열을 순회하면서 시드 값보다 더 많은 문자를 가진 문자열이 발견될 때마다 최장 문자열이 갱신되는 방식으로 동작합니다.
전체 예제 코드
using System;
using System.Linq;
class Demo {
static void Main() {
string[] arr = { "Java", "HTML", "CSS", "JavaScript"};
string res = arr.AsQueryable().Aggregate("jQuery", (longest, next) => next.Length > longest.Length ? next : longest, str => str.ToLower());
Console.WriteLine("String with more number of characters: {0}", res);
}
}실행 결과
String with more number of characters: javascript
배열 내에서 “JavaScript”가 10글자로 가장 길기 때문에 최종 결과로 선택되었으며, 결과 선택자에 의해 모두 소문자인 “javascript”로 출력된 것을 확인할 수 있습니다.