在VB.NET中对多维数组进行排序 [英] Sort Multidimensional Array in VB.NET
问题描述
具有这样的50X2数组-
R-125212,11
C-254645,25
R-456598,96
M-456878,35
O-980857,89
And so on...
现在我想用第二个值对这个数组进行排序柱子.因此输出应类似于-
R-125212,11
C-254645,25
M-456878,35
O-980857,89
R-456598,96
And so on...
如何使用VB.NET轻松做到这一点?如果还有其他更好的方法可以在不使用< g class ="gr_gr_10 gr-alert gr_gramm gr_run_anim的情况下获得相似的结果
语法仅存的doubleReplace replaceWithoutSep data-gr-id ="10". id =" 10" array</g> ;,这也将对我有帮助.
How to do this with VB.NET easily? If there is other better way to have the similar result without using <g class="gr_ gr_10 gr-alert gr_gramm gr_run_anim
Grammar only-ins doubleReplace replaceWithoutSep" data-gr-id="10" id="10">array</g>, that also will also help me.
推荐答案
Sayom,
Sayom,
这不是您要的,但也许会给您一些想法:
This isn't what you asked for but maybe it'll give you some ideas:
Option Strict On
Option Explicit On
Option Infer Off
Public Class Form1
Private Sub Form1_Load(ByVal sender As System.Object, _
ByVal e As System.EventArgs) _
Handles MyBase.Load
Dim data As New List(Of Sayom)
With data
.Add(New Sayom(-125212, 11))
.Add(New Sayom(-254645, 25))
.Add(New Sayom(-456598, 96))
.Add(New Sayom(-456878, 35))
.Add(New Sayom(-980857, 89))
End With
Dim sorted As IEnumerable(Of Sayom) = _
Sayom.GetSorted(data, Sayom.SortBy.ColumnB, _
Sayom.SortOrder.Ascending)
Dim sb As New System.Text.StringBuilder
For Each s As Sayom In sorted
sb.AppendLine(String.Format("{0},{1}", s.ColumnA, s.ColumnB))
Next
MessageBox.Show(sb.ToString)
Stop
End Sub
End Class
Public Class Sayom
Public Enum SortBy
ColumnA
ColumnB
End Enum
Public Enum SortOrder
Ascending
Descending
End Enum
Private _columnA As Integer
Private _columnB As Integer
Public Sub New(ByVal valA As Integer, _
ByVal valB As Integer)
_columnA = valA
_columnB = valB
End Sub
Public Shared Function _
GetSorted(ByVal enumerable As IEnumerable(Of Sayom), _
ByVal columnSort As SortBy, _
ByVal order As SortOrder) As IEnumerable(Of Sayom)
Dim retVal As IEnumerable(Of Sayom) = Nothing
If enumerable IsNot Nothing AndAlso enumerable.Count > 0 Then
Dim qry As System.Linq.IOrderedEnumerable(Of Sayom) = Nothing
Select Case columnSort
Case SortBy.ColumnA
Select Case order
Case SortOrder.Ascending
qry = From s As Sayom In enumerable Order By s.ColumnA Ascending
Case SortOrder.Descending
qry = From s As Sayom In enumerable Order By s.ColumnA Descending
End Select
Case SortBy.ColumnB
Select Case order
Case SortOrder.Ascending
qry = From s As Sayom In enumerable Order By s.ColumnB Ascending
Case SortOrder.Descending
qry = From s As Sayom In enumerable Order By s.ColumnB Descending
End Select
End Select
If qry IsNot Nothing Then
retVal = qry.ToArray
End If
End If
Return retVal
End Function
Public ReadOnly Property ColumnA As Integer
Get
Return _columnA
End Get
End Property
Public ReadOnly Property ColumnB As Integer
Get
Return _columnB
End Get
End Property
End Class
这篇关于在VB.NET中对多维数组进行排序的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!