>백엔드 개발 >C++ >숫자 접미사를 사용하여 LINQ에서 영숫자 순서를 어떻게 달성할 수 있습니까?

숫자 접미사를 사용하여 LINQ에서 영숫자 순서를 어떻게 달성할 수 있습니까?

Patricia Arquette
Patricia Arquette원래의
2024-12-29 01:29:11385검색

How Can I Achieve Alphanumeric Ordering in LINQ with Numeric Suffixes?

LINQ의 영숫자 순서

LINQ에서 OrderBy 메서드는 알파벳과 숫자를 모두 순서대로 고려하는 사전순 정렬 규칙을 따릅니다. 그러나 숫자 값으로 끝나는 문자열을 정렬하는 경우 이 순서로 원하는 결과가 나오지 않을 수 있습니다.

다음 예를 고려하세요.

string[] partNumbers = { "ABC10", "ABC1", "ABC2", "ABC11", "ABC10", "AB1", "AB2", "Ab11" };
var result = partNumbers.OrderBy(x => x);

사전식 순서에 따른 실제 결과는

AB1
Ab11
AB2
ABC1
ABC10
ABC10
ABC11
ABC2

그러나 예상되는 결과는 숫자에 관계없이 유사한 알파벳 순서를 함께 그룹화하는 것입니다. 접미사. 이를 위해서는 순서 기준을 수정해야 합니다.

영숫자순 정렬의 핵심은 패딩된 숫자 부분을 비교하는 것입니다. 숫자 값에 0을 채워 LINQ가 숫자 값을 적절하게 구분할 수 있도록 합니다. 이를 수행하는 방법은 다음과 같습니다.

public static string PadNumbers(string input)
{
    return Regex.Replace(input, "[0-9]+", match => match.Value.PadLeft(10, '0'));
}

이 함수는 입력 문자열 내의 모든 숫자에 0을 채웁니다. LINQ에서 이 함수를 순서 기준으로 사용하면 다음과 같은 예상 결과를 얻을 수 있습니다.

var result = partNumbers.OrderBy(x => PadNumbers(x));

결과 목록은 이제 다음과 같이 순서가 지정됩니다.

AB1
AB2
AB11
...

이 접근 방식은 최대값을 가정합니다. 숫자 부분의 자릿수는 알려져 있습니다. 더 복잡한 경우에는 비교 기준을 더욱 세밀하게 제어할 수 있는 사용자 지정 IComparer 구현을 고려해 보세요.

위 내용은 숫자 접미사를 사용하여 LINQ에서 영숫자 순서를 어떻게 달성할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.