string[]
을 허용하는 메서드가 있습니다. 이 배열을 가져 와서 우리가 가지고있는 커스텀 대수 공식에 따라 정렬합니다. 이 대수 공식은 매우 복잡하며 IEnumerable<string>
이외의 다른 수락을 허용 할 수 없거나 적용해서는 안됩니다.개체 목록을 속성 값이 포함 된 배열의 순서와 빠르게 정렬합니다.
나는 을 받아들이는이 메소드에 대한 랩퍼 함수를 작성해야한다. 여기서 T
은 정렬에 사용할. 자열을 표시하는 인터페이스를 구현합니다.
이것을 기반으로 유전 열거 형을 반복하고 문자열을 추출한 다음 결과 배열을 사용자 지정 정렬 함수로 전달하는 메서드를 만들었습니다. 이 작동하지만, 문자열의 정렬 된 배열로, 원래 IEnumerable <T>
완전히 연결이 끊어집니다. IEnumerable <T>
을 사용자 지정 정렬 함수에서 반환 된 문자열 배열과 정렬하려면 어떻게 정렬합니까?
예를 들면.
private IEnumerable<T> Sort(IEnumerable<T> objects) where T: ICustomSortable
{
string[] stringsToSort = new string[objects.Count()];
for (int i = 0; i < stringsToSort.length; i++)
stringsToSort[i] = objects.getString();
stringsToSort = customSortFunction(stringsToSort);
//somehow sort the objects so that they are in the same order as stringsToSort?
/*
The result is valid when:
objects[0].getString() == stringsToSort[0]
objects[1].getString() == stringsToSort[1]
objects[2].getString() == stringsToSort[2]
...
objects[n].getString() == stringsToSort[n]
*/
}
편집 : customSortFunction
에서 검색된 문자열은 고유하지 않을 수 있습니다. 즉 문자열이 동일한 두 개의 objects
이 모두 결과에 존재해야합니다. 동일한 문자열 값을 사용하는 objects
의 순서는 부적합하지만 결과를 전체적으로 참조 할 때는 그대로 두어야합니다.
전체적으로 customSortFunction()을 사용해야합니까? 두 개의 문자열을 비교할 수 있습니까? 'bool customCompare (string1, string2); '와 비슷합니까? – realharry
아니요. 사용자 지정 함수를 사용해야합니다. 그리고 배열 전체를 전달해야합니다. –
확인. 그 이유는 성능 때문이라고 생각하니? customSortFunction()을 호출하고 정렬 전과 후에 쌍을 비교하여'customCompare()'함수를 쉽게 구현할 수 있기 때문입니다. (한 쌍의 목록은 결국 2 요소 목록입니다.) – realharry