목록을 지정된 크기의 하위 단위로 분할
이 문서에서는 일반적인 문제를 해결합니다. 즉, 주어진 목록을 각각 미리 정의된 수의 요소를 포함하는 여러 개의 작은 하위 목록으로 분할하는 방법입니다. 기존 방법을 사용하면 하위 목록 크기가 예상보다 커지는 경우가 많습니다.
이 문제를 해결하려면 소스 목록을 지정된 크기의 하위 목록으로 분할할 수 있는 확장 방법을 사용하는 것이 좋습니다. 이 메서드는 ChunkBy
이라는 이름으로 LINQ의 집계 및 프로젝션 기능을 활용하여 원하는 결과를 얻습니다.
다음 코드 조각을 참조하세요.
<code class="language-csharp">/// <summary> /// 列表辅助方法。 /// </summary> public static class ListExtensions { public static List<List<T>> ChunkBy<T>(this List<T> source, int chunkSize) { return source .Select((x, i) => new { Index = i, Value = x }) .GroupBy(x => x.Index / chunkSize) .Select(x => x.Select(v => v.Value).ToList()) .ToList(); } }</code>
이 방법은 소스 목록의 요소를 반복하고 각 요소를 해당 인덱스와 연결합니다. 그런 다음 요소 인덱스를 블록 크기로 나눈 값을 기준으로 요소를 그룹화합니다. 마지막으로 요소 값을 포함하는 하위 목록에 그룹을 투영합니다.
예를 들어 18개 항목의 목록이 각각 5개 요소의 하위 목록으로 분할되면 결과는 다음과 같이 배포된 4개 하위 목록의 목록이 됩니다: 5-5-5-3.
참고: .NET 6에서는 다음 예와 같이 LINQ 개선으로 분할이 더 쉬워졌습니다.
<code class="language-csharp">const int PAGE_SIZE = 5; IEnumerable<Movie[]> chunks = movies.Chunk(PAGE_SIZE);</code>
위 내용은 목록을 특정 크기의 더 작은 하위 목록으로 효율적으로 분할하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!