在VB.NET中对多维数组进行排序 [英] Sort Multidimensional Array in VB.NET

查看:78
本文介绍了在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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆