对数组进行排序,其中每个项都是以逗号分隔的值列表

时间:2016-11-23 05:26:19

标签: arrays vb.net sorting

在vb.net中我有一个值数组,如下所示

arr(0) = "US,20,10,true"
arr(1) = "Ind,22,8,true"
arr(2) = "UK,40,6,true"
arr(3) = "Chi,30,22,true"
arr(4) = "Jpn,50,18,true"
arr(5) = "Isr,18,15,true"

我现在想要实现的是按照每个元素中第3个值的升序对此数组进行排序(即,根据值10,8,6,22,18和15对整个数组进行排序)。排序后我应该得到如下给出的数组

arr(0) ="UK,40,6,true"
arr(1) ="Ind,22,8,true"
arr(2) ="US,20,10,true"
arr(3) ="Isr,18,15,true"
arr(4) ="Jpn,50,18,true"
arr(5) ="Chi,30,22,true"

有人能为我提供代码吗?

谢谢, KDR

2 个答案:

答案 0 :(得分:2)

输入:

if(Condition){
Code...
}

输出:

Dim arr(5) As String
arr(0) = "US,20,10,true"
arr(1) = "Ind,22,8,true"
arr(2) = "UK,40,6,true"
arr(3) = "Chi,30,22,true"
arr(4) = "Jpn,50,18,true"
arr(5) = "Isr,18,15,true"  

arr = arr.Cast(Of String).Select(Function(a) a.Split(","c)).
                          Select(Function(a) New With {Key .State = a(0),
                                                           Key .No1 = a(1),
                                                           Key .No2 = a(2),
                                                           Key .Bool = a(3)}).
                          OrderBy(Function(o) CInt(o.No2)).
                          Select(Function(s) String.Concat(s.State, ",", s.No1, ",", s.No2, ",", s.Bool)).ToArray()

For Each item In arr
   Console.WriteLine(item)
Next
  • 按逗号UK,40,6,true Ind,22,8,true US,20,10,true Isr,18,15,true Jpn,50,18,true Chi,30,22,true
  • 拆分输入数组元素
  • 为split
  • 的每个元素创建IEnumerable匿名类型
  • 转换为整数并按匿名类型排序.No2(=数组中的第3个值)
  • 将有序匿名类型的IEnumerable转发回数组

答案 1 :(得分:0)

为什么你不使用DataTable?

Dim Table1 As New DataTable

' Create four typed columns in the DataTable.
Table1.Columns.Add("Country", GetType(String))
Table1.Columns.Add("Num1", GetType(Integer))
Table1.Columns.Add("Num2", GetType(Integer))
Table1.Columns.Add("Bol", GetType(Boolean))

' Add some rows in the DataTable.
Table1.Rows.Add("IT", "123", "456", True)
Table1.Rows.Add("DE", "456", "789", False)