Arrays 我无法将文本文件获取到数组,然后对数组进行排序

Arrays 我无法将文本文件获取到数组,然后对数组进行排序,arrays,vb.net,sorting,numbers,text-files,Arrays,Vb.net,Sorting,Numbers,Text Files,我需要将保存的文本文件读入数组,然后对其进行数字排序。这相当困难,因为文本文件是: 10 First name:bob 30 first name:sam 等等。它不是以这种方式排序的,而是以score first name&first name的结构保存在文本文件中。我必须对它进行数字排序,从高到低。我试过sort.array。但这只用于按字母顺序对只包含单词的数组进行排序。我尝试过其他方法,但似乎不起作用。有人能帮我吗。感谢您使用LINQ: Dim DataFileName As

我需要将保存的文本文件读入数组,然后对其进行数字排序。这相当困难,因为文本文件是:

10 First name:bob
30 first name:sam
等等。它不是以这种方式排序的,而是以score first name&first name的结构保存在文本文件中。我必须对它进行数字排序,从高到低。我试过sort.array。但这只用于按字母顺序对只包含单词的数组进行排序。我尝试过其他方法,但似乎不起作用。有人能帮我吗。感谢您使用LINQ:

    Dim DataFileName As String = "C:\Users\Mike\Documents\Data.txt"
    Dim SortedByScore = From line In System.IO.File.ReadLines(DataFileName)
                        Let score = CInt(line.Split(" ")(0))
                        Order By score Descending
                        Select line
    For Each line As String In SortedByScore
        Debug.Print(line.ToString)
    Next
使用Array.Sort和比较器:

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    Dim DataFileName As String = "C:\Users\Mike\Documents\Data.txt"
    Dim Lines() As String = System.IO.File.ReadAllLines(DataFileName)
    Array.Sort(Lines, AddressOf SortByScore)
    For Each line As String In Lines
        Debug.Print(line.ToString)
    Next
End Sub
问题中指定的原始格式为:10名字:bob

如果格式实际为:bob{vbTab}score:10,请尝试:

Private Function SortByScore(ByVal x As Object, ByVal y As Object) As Integer
    Dim valuesX() As String = x.ToString.Split(":")
    Dim valuesY() As String = y.ToString.Split(":")
    Return CInt(valuesY(1)).CompareTo(CInt(valuesX(1)))
End Function

欢迎来到堆栈溢出!请花一点时间仔细检查:私有子Btn_平均值3_ClickByVal发件人作为System.Object,ByVal e As System.EventArgs处理Cmb_Averages3。单击Dim DataFileName As String=G:\ControlEaseSessmentClass\Class3\average3.txt Dim Lines As String=System.IO.File.ReadAllLinesDataFileName Array.SortLines,在Lines Debug.Printline.ToString NextPrivate函数SortByVal x中,每行作为字符串的SortByScore地址作为对象,ByVal y As Object As Integer Dim valuesX As String=x.ToString.Split Dim valuesY As String=y.ToString.Split返回CIntvaluesY0.CompareToCIntvaluesX0 End Function它表示Microsoft.VisualBasic.dll中出现“System.InvalidCastException”类型的异常,但未在用户代码中处理信息:从字符串12转换为“整型”无效。如果存在此异常的处理程序,则可以安全地继续该程序。然后,在mscorlib.dll中发生类型为“System.InvalidOperationException”的未处理异常。其他信息:无法比较数组中的两个元素。但文本文件设置为11 ligh,然后是制表符12
Private Function SortByScore(ByVal x As Object, ByVal y As Object) As Integer
    Dim valuesX() As String = x.ToString.Split(":")
    Dim valuesY() As String = y.ToString.Split(":")
    Return CInt(valuesY(1)).CompareTo(CInt(valuesX(1)))
End Function