[英]Comparing two non-numeric values, selecting lower in ASP.NET/VB.NET
我正在更新我的雇主(大学)使用的书面申请,以允许学生注册所需的宿舍。
我正在研究一项新功能,该功能允许学生与另一名学生“伙伴”-这样,当一个或另一个注册房间时,另一个学生也将被注册。
现在,让我们说我们有John Doe和James Doe-他们彼此合作进行房间注册。 根据他们当前的班级水平错开学生的时间。 我需要一种方法(无需十亿个IF..THEN语句)来确定哪个学生的学习水平较低。 等级级别的值是FR,SO,JR,SR,5SR(从大多数初级到高级)。
在上面的示例中,John Doe可能是FR,而James Doe可能是SR。 在允许FR进行注册之前,都不应该允许James和John进行注册-因为那是合伙制的“基础”课程级别。
本质上,我想做类似的事情:
IF John_Doe_Class_Level < James_Doe_Class_Level Then
Partnership_Class_Level = John_Doe_Class_Level
Else
Partnernship_Class_Level = James_Doe_Class_Level
End If
任何想法如何有效地做到这一点?
您在哪里定义班级水平? 如果在代码中,请使用带有关联数字值的枚举。
Public Enum ClassLevel As Integer
FR = 0
SO = 1
JR = 2
End Enum
Public Class Student
Public Property Name As String
Public Property Level As ClassLevel
End Class
Public Sub TestIt(ByVal studentA As Student, ByVal studentB As Student)
If studentA.Level > studentB.Level Then
' dostuff
End If
End Sub
我知道我显然缺少了一些东西,但是如果您将这些课程级别分配给一个枚举,那么为什么上面的方法不起作用?
public enum ClassLevel
{
FR=1,
SO=2,
JR=2,
SR=3,
5SR=4
}
etc
IF John_Doe.ClassLevel < JamesDoe.Class_Level Then
Partnership.Class_Level = John_Doe.ClassLevel
Else
Partnernship.Class_Level = James_Doe.ClassLevel
End If
我将通过返回一个数字的函数运行这些值,然后将这些值相互比较。 就像是...
IF numericClassLevel(John_Doe_Class_Level) < numericClassLevel(John_Doe_Class_Level) Then
Partnership_Class_Level = John_Doe_Class_Level
Else
Partnernship_Class_Level = James_Doe_Class_Level
End If
public function numericClassLevel(strClassLevel) as integer
select case strLevel
case "FR"
return 1
etc.
end select
end function
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.