繁体   English   中英

比较两个非数字值,在ASP.NET/VB.NET中选择较低的值

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM