그래서이 함수는 데이터 테이블을 가져 와서 두 개의 열로 사용자를 정렬합니다. (순위 및 ordercount가)데이터 테이블의 열 순서
Function DetermineBestUser(ByVal usertable As DataTable)
Dim bestchoice As DataRow()
For u = 0 To usertable.Rows.Count - 1
If Not DoesProcessorNeedOrders(usertable.Rows(u).Item("UserName"), usertable.Rows(u).Item("Amount")) Then
usertable.Rows(u).Delete()
End If
Next
bestchoice = usertable.Select("", "Rank ASC, OrderCount DESC")
If IsDBNull(usertable) Then
Console.WriteLine("No user is qualified for this order at this moment")
End If
Return bestchoice(0)(0).ToString
End Function
문제는 때로는이 기능이 올바르게 작동하고 나에게 가장 높은 계급을 가진 사용자 준다이다 (1 또는 2)와 최저 인 ordercount (0 - 30 +). 그러나 때로는 올바른 사람을 반환하지 않습니다. 이 문제를 해결 한 유일한 방법은 "Ordercount DESC"를 "OrderCount ASC"로 변경하는 것입니다. 그러나이 변경은 특정 주문에만 적용되며 잘못된 사람을 돌려주는 것으로 돌아갑니다.
좀 더 자세하게 표시됩니다 몇 가지 테스트 실행이 : R1 & R2를 = 순위 1 또는 2/"ordercount가"
Rank ASC, Ordercount ASC
#1
dane-R2/12
jerm-R1/15
tulsa-R1/5
---picks Jerm (should pick tulsa)
#2
Dane-R2/14
Jerm-R2/15
Kate- R2/15
---picks Dane
#3
Dane-R2/15
Jerm-R2/5
Kate-R2/5
---picks dane (should pick Jerm or Kate)
Rank ASC, Ordercount DESC
#1
dane-R2/12
jerm-R1/15
tulsa-R1/5
---picks Tulsa
#2
Dane-R2/14
Jerm-R2/15
Kate- R2/15
---picks Jerm (should pick Dane)
#3
Dane-R2/15
Jerm-R2/5
Kate-R2/5
---picks Jerm
'username, amount'이 (가) 선언 된 변수는 무엇입니까? –
아, 그저 단순화했습니다. 나는 그걸 테이블에서 잡아 올거야. 나는 그 포스트를 편집 할 것이다. – MaylorTaylor
OrderCount가 텍스트 값일 수 있습니까? 텍스트를 정렬 할 때 (어휘 정렬), 15는 5보다 작지만 문자 단위로 보이고 첫 번째 차이에서 결과를 반환합니다. –