Inspector와 InspectorRates의 두 가지 일반 목록이 있습니다. Inspector 클래스에는 Inspector Rate 클래스의 객체가 있습니다.여러 값과 특정 값에 대한 IComparer
요율 유형은 (선택하지 않음 = 0, 1 = 일을 평가, 2 = 시간별 요금) 세 가지 다른 값이 있습니다.
나는 모든 첫날 종류 요금으로 검사 한 후 가장 낮은 비율을 보여주고 싶어요. 사용자가 "시간별 요율"옵션을 선택하면 시간별 요율 및 최저 요율로 목록을 정렬해야합니다. 선택되지 않은 요율은 항상 하단에 표시됩니다.
예 : 정렬 후, 목록의 내용이 순서를 다음에 있어야합니다 (첫 번째 BYDAY이고, 두 번째는 시간입니다)
내가 정렬 IComparer 클래스를 만들 수 있지만 수 없습니다 특정 및 여러 필드를 기반으로 목록을 정렬하는 방법을 알아보십시오.
Public Class InspectorSort
Implements IComparer(Of Inspector)
Private listOrderBy As OrderBy = OrderBy.FirstName
Private listDirection As Direction = Direction.Assending
Public Enum OrderBy As Byte
InspectorID = 0
FirstName = 2
DayRate = 14
HourlyRate = 15
End Enum
Public Enum Direction As Integer
Assending = 1
Decending = -1
End Enum
Public Sub New(ByVal mOrderBy As OrderBy, ByVal mDirection As Direction)
listOrderBy = mOrderBy
listDirection = mDirection
End Sub
Public Function Compare(ByVal x As Objects.Inspector, ByVal y As Objects.Inspector) As Integer Implements System.Collections.Generic.IComparer(Of Objects.Inspector).Compare
Dim value As Integer = 0
Select Case listOrderBy
Case OrderBy.InspectorID
If x.InspectorID > y.InspectorID Then
value = 1
ElseIf x.InspectorID < y.InspectorID Then
value = -1
End If
Case OrderBy.FirstName
If x.FirstName.ToLower > y.FirstName.ToLower Then
value = 1
ElseIf x.FirstName.ToLower < y.FirstName.ToLower Then
value = -1
End If
Case OrderBy.DayRate
If x.DefaultRate.RateType = Rates.RateTypeEnum.Day_Rate Then
If x.DefaultRate.RateType = Rates.RateTypeEnum.Day_Rate And x.DefaultRate.Rate > y.DefaultRate.Rate Then
value = 1
End If
End Select
Return value * listDirection
End Function
End Class
답장을 보내 주셔서 감사합니다 :) 나는 거의 다 왔어. 1,2,0 형식으로 정렬하려면 논리를 어떻게 적용할까요? 따라서 RateType 1은 오름차순으로, 그 다음은 오름차순으로 2와 함께 0 – user1263981
그냥 코드를 테스트하고 편집을 참조하십시오. 테스트되지 않은 sry가 있어야합니다. – CheGueVerra