Vb.net 如何更改IF语句以选择…Case

Vb.net 如何更改IF语句以选择…Case,vb.net,Vb.net,我已经得到了以下内容,其中包含了一个特定变量的多个值,我不想用大量的IF-ELSE语句来处理它们,因此如果有人能够非常友好地使用SELECT-CASE语句来修改代码,我将不胜感激 另外,我希望dgMarksEntry.Item(7,I).Value和dgMarksEntry.Item(8,I).Value分别处理RANK和COUNT输入的项目数 For i = 0 To 100 dgMarksEntry.Item(4, i).Value = Val(dgMarksEntry.I

我已经得到了以下内容,其中包含了一个特定变量的多个值,我不想用大量的
IF-ELSE
语句来处理它们,因此如果有人能够非常友好地使用
SELECT-CASE
语句来修改代码,我将不胜感激

另外,我希望
dgMarksEntry.Item(7,I).Value
dgMarksEntry.Item(8,I).Value
分别处理
RANK
COUNT
输入的项目数

 For i = 0 To 100
        dgMarksEntry.Item(4, i).Value = Val(dgMarksEntry.Item(3, i).Value) + Val(dgMarksEntry.Item(2, i).Value)

        If dgMarksEntry.Item(4, i).Value >= 80 Then
            dgMarksEntry.Item(5, i).Value = "A1"
            dgMarksEntry.Item(6, i).Value = "Excellent"
        ElseIf dgMarksEntry.Item(4, i).Value >= 75 Then
            dgMarksEntry.Item(5, i).Value = "B2"
            dgMarksEntry.Item(6, i).Value = "Very good"
        ElseIf dgMarksEntry.Item(4, i).Value >= 70 Then
            dgMarksEntry.Item(5, i).Value = "B3"
            dgMarksEntry.Item(6, i).Value = "Good"
        ElseIf dgMarksEntry.Item(4, i).Value >= 65 Then
            dgMarksEntry.Item(5, i).Value = "C4"
            dgMarksEntry.Item(6, i).Value = "Credit"
        ElseIf dgMarksEntry.Item(4, i).Value >= 60 Then
            dgMarksEntry.Item(5, i).Value = "C5"
            dgMarksEntry.Item(6, i).Value = "Credit"
        ElseIf dgMarksEntry.Item(4, i).Value >= 55 Then
            dgMarksEntry.Item(5, i).Value = "C6"
            dgMarksEntry.Item(6, i).Value = "Credit"
        ElseIf dgMarksEntry.Item(4, i).Value >= 50 Then
            dgMarksEntry.Item(5, i).Value = "D7"
            dgMarksEntry.Item(6, i).Value = "Pass"
        ElseIf dgMarksEntry.Item(4, i).Value >= 40 Then
            dgMarksEntry.Item(5, i).Value = "E8"
            dgMarksEntry.Item(6, i).Value = "Weak pass"
        ElseIf dgMarksEntry.Item(4, i).Value <= 39 Then
            dgMarksEntry.Item(5, i).Value = "F9"
            dgMarksEntry.Item(6, i).Value = "Fail"
        End If
    Next
用于i=0到100
dgMarksEntry.Item(4,i).Value=Val(dgMarksEntry.Item(3,i).Value)+Val(dgMarksEntry.Item(2,i).Value)
如果dgMarksEntry.Item(4,i).Value>=80,则
dgMarksEntry.Item(5,i).Value=“A1”
dgMarksEntry.Item(6,i).Value=“优秀”
ElseIf dgMarksEntry.Item(4,i).值>=75然后
dgMarksEntry.Item(5,i).Value=“B2”
dgMarksEntry.Item(6,i).Value=“非常好”
ElseIf dgMarksEntry.Item(4,i).值>=70然后
dgMarksEntry.Item(5,i).Value=“B3”
dgMarksEntry.Item(6,i).Value=“良好”
ElseIf dgMarksEntry.Item(4,i).值>=65然后
dgMarksEntry.Item(5,i).Value=“C4”
dgMarksEntry.Item(6,i).Value=“信用”
ElseIf dgMarksEntry.Item(4,i).值>=60然后
dgMarksEntry.第(5,i)项.Value=“C5”
dgMarksEntry.Item(6,i).Value=“信用”
ElseIf dgMarksEntry.Item(4,i).值>=55然后
dgMarksEntry.Item(5,i).Value=“C6”
dgMarksEntry.Item(6,i).Value=“信用”
ElseIf dgMarksEntry.项(4,i).值>=50,则
dgMarksEntry.Item(5,i).Value=“D7”
dgMarksEntry.Item(6,i).Value=“通过”
ElseIf dgMarksEntry.Item(4,i).值>=40然后
dgMarksEntry.Item(5,i).Value=“E8”
dgMarksEntry.Item(6,i).Value=“弱通过”

ElseIf dgMarksEntry.Item(4,i).Value您需要做的所有事情都在这一页上,包括一些开始的示例


我会选择一种完全不同的方法。首先,声明一个类,该类可以包含评级信息:

Public Class CreditRating
    Private m_Limit As Integer
    Public Property Limit() As Integer
        Get
            Return m_Limit
        End Get
        Set(ByVal value As Integer)
            m_Limit = value
        End Set
    End Property

    Private m_Rating As String
    Public Property Rating() As String
        Get
            Return m_Rating
        End Get
        Set(ByVal value As String)
            m_Rating = value
        End Set
    End Property

    Private m_Appreciation As String
    Public Property Appreciation() As String
        Get
            Return m_Appreciation
        End Get
        Set(ByVal value As String)
            m_Appreciation = value
        End Set
    End Property
End Class
然后将逻辑更改为:

Dim ratings As New List(Of CreditRating)

ratings.Add(New CreditRating With {.Limit = 80, .Rating = "A1", .Appreciation = "Excellent"})
ratings.Add(New CreditRating With {.Limit = 75, .Rating = "B2", .Appreciation = "Very good"})
ratings.Add(New CreditRating With {.Limit = 70, .Rating = "B3", .Appreciation = "Good"})
ratings.Add(New CreditRating With {.Limit = 65, .Rating = "C4", .Appreciation = "Credit"})
ratings.Add(New CreditRating With {.Limit = 60, .Rating = "C5", .Appreciation = "Credit"})
ratings.Add(New CreditRating With {.Limit = 55, .Rating = "C6", .Appreciation = "Credit"})
ratings.Add(New CreditRating With {.Limit = 50, .Rating = "D7", .Appreciation = "Pass"})
ratings.Add(New CreditRating With {.Limit = 40, .Rating = "E8", .Appreciation = "Weak pass"})
ratings.Add(New CreditRating With {.Limit = 0, .Rating = "F9", .Appreciation = "Fail"})

For i As Integer = 0 To 100
    Dim value As Double = Conversion.Val(dgMarksEntry(3, i).Value) + Conversion.Val(dgMarksEntry(2, i).Value)
    dgMarksEntry(4, i).Value = value
    For Each rating As CreditRating In ratings
        If value >= rating.Limit Then
            dgMarksEntry(5, i).Value = rating.Rating
            dgMarksEntry(6, i).Value = rating.Appreciation
            Exit For
        End If
    Next
Next

通过这种方法,您还可以从文件或数据库中读取评级信息。这使得更改限制更容易。它也不太容易出错,因为逻辑只编程一次,所有限制都是相同的。

您想让我们为您编码吗??!请显示您的SQL。。。你试过什么?什么不起作用?我已经检查了链接,但我仍然可以得到它非常好。请尝试更改我的IF-ELSE语句以为我选择案例。请给我举个例子。@Akaglo:如果dgMarksEntry.Item(4,i).Value>=80,那么您是否尝试编写了
案例dgMarksEntry.Item(4,i).Value>=80?等等…非常感谢。我完全理解你的代码。它工作得很好。