【问题标题】:sort 2d Array re-order the first columnsort 2d Array 重新排序第一列
【发布时间】:2015-07-14 01:13:01
【问题描述】:

例如:

Array
ID | Primary | Data2
------------------
1  | N       | Something 1
2  | N       | Something 2
3  | Y       | Something 3

我正在尝试根据主列对其进行排序,我希望首先显示“Y”。它应该将所有其他列放在顶部。

最终结果是:

Sorted Array
ID | Primary | Data2
------------------
3  | Y       | Something 3
1  | N       | Something 1
2  | N       | Something 2

是否有为此的预制功能。如果没有,我们该怎么做?

声明如下:

Dim Array(,) As String

问候,

【问题讨论】:

    标签: arrays vb.net sorting


    【解决方案1】:

    我喜欢使用 LINQ 的 OrderByThenBy 来对对象集合进行排序。您只需传入一个选择器函数以用于对集合进行排序。例如:

    orderedObjs = objs.OrderByDescending(function(x) x.isPrimary).ThenBy(function(x) x.id).ToList()
    

    此代码首先按 .isPrimary 布尔值排序集合,然后按 id。最后,它立即将查询评估为 List 并将其分配给某个变量。

    Demo

    【讨论】:

    • 像魅力一样工作。不得不对其进行一些调整以使其正常工作。这是实现这一目标的好方法。我必须修改软件中的逻辑,因为我之前没有使用对象。反正这样更好。
    【解决方案2】:

    有一个类似的C# question,其解决方案同样适用于VB。简而言之,如果您首先将二维数组拆分为单独的 (1D) 数组,则可以使用 an overloadArray.Sort

    Dim Primary() As String
    Dim Data2() As String
    // ...
    Array.Sort(Primary,Data2)
    

    这将根据 Primary 的 Y/N 排序重新排序 Data2,然后您可以将它们重新组合成一个二维数组。

    【讨论】:

      猜你喜欢
      • 2013-03-21
      • 1970-01-01
      • 2021-11-29
      • 2018-04-04
      • 1970-01-01
      • 2016-11-07
      • 1970-01-01
      • 2013-12-14
      • 1970-01-01
      相关资源
      最近更新 更多