通过仅考虑列中值的一部分来对表进行升序排序

时间:2020-07-28 08:50:19

标签: vb.net sorting datatable

我想按升序对表进行排序,但是我需要对之进行排序的字段的值不应该用于这种排序,因为它是随机生成的,并且我不希望它影响

示例:我有ES0420111112和ES0120111113

在这种情况下,值ES0420111112由于开头为04而被认为较高,但我只想在排序时从第六个值开始考虑,即111112

这样,我将首先展示自己ES0420111112,然后展示ES0120111113

我曾尝试创建一个与上一个表类似的辅助表,但切出该列的值并在以后对其进行排序,但是我不知道如何将该过滤器顺序应用于我真正想要的那个表。知道怎么做吗?我想解决方案将在比较两个表时与“索引”的顺序有关。

1 个答案:

答案 0 :(得分:0)

您有这样的想法吗?

 Try

        Dim table As DataTable = New DataTable
        table.Columns.Add("Column1")

        For i As Integer = 111 To 0 Step -2
            Dim row As DataRow = table.NewRow
            row.Item("Column1") = "ES012011111" & i.ToString
            table.Rows.Add(row)
        Next

        Dim orderedRows = From record In table
                          Select Column1 = record.Item("Column1"),
                                 ColumnForOrder = Microsoft.VisualBasic.Right(CStr(record.Item("Column1")), 6)
                          Order By ColumnForOrder Ascending


        For Each row In orderedRows
            Console.WriteLine("Column1: " & row.Column1.ToString)
            Console.WriteLine("ColumnForOrder: " & row.ColumnForOrder)
        Next

    Catch ex As Exception
        Console.WriteLine(ex.ToString)
    End Try