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

时间:2012-01-19 17:37:53

标签: asp.net vb.net entity-framework comparison

我正在更新我所写的用于我的雇主,大学的申请,以允许学生注册他们想要的宿舍。

我正在开发一项新功能,允许学生与另一名学生“合作” - 这样当一个或另一个注册一个房间时,另一个学生也将被注册。

现在,让我们说我们有John Doe和James Doe - 他们彼此合作进行房间登记。学生根据他们目前的班级水平错开的时间。我需要一种方法来确定(没有十亿IF..THEN语句)哪个学生具有较低的班级水平。课程级别的值是FR,SO,JR,SR,5SR(从大多数初级到最高级)。

在上面的例子中,John Doe可能是FR,而James Doe可能是SR。在FR被允许注册之前,詹姆斯和约翰都不应该被允许注册 - 因为这是伙伴关系“基础”级别。

基本上我想做类似的事情:

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

知道如何有效地实现这一目标吗?

3 个答案:

答案 0 :(得分:3)

您在哪里定义班级?如果它在代码中,请使用带有关联数值的枚举。

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

答案 1 :(得分:2)

我知道我显然遗漏了一些东西,但是如果你把这些课程级别分配给一个枚举,为什么上面的工作没有呢?


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

答案 2 :(得分:1)

我会通过返回数字的函数运行值,然后将这些值相互比较。有点像...

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