VB.net DataTable关于Sort无效的说明

VB.net DataTable关于Sort无效的说明

今天发现项目上代码的一个bug,DataTable在使用DefaultView.Sort时,后续使用了Rows来取值,但是排序没起作用。
经过一番调查发现,DefaultView.Sort只对DefaultView有效,对Rows无效。

解决办法

  1. 后续使用DefaultView来取值
  2. DefaultView.ToTable()

代码 方法1

        Dim dt As New DataTable
        dt.Columns.Add("Name", Type.GetType("System.String"))

        Dim row As DataRow
        Dim names() As String = {"不適合", "品名", "書", "品質", "実施", "変更"}

        For Each name As String In names
            row = dt.NewRow()
            row("Name") = name
            dt.Rows.Add(row)
        Next

        dt.DefaultView.Sort = "Name"   ' 使用Name排序

        dt = dt.DefaultView.ToTable()

        Console.WriteLine("----------------------初始------------------------")
        For Each name As String In names
            Console.WriteLine(name)
        Next

        Console.WriteLine("---------------------使用Rows---------------------")
        For Each dr As DataRow In dt.Rows
            Console.WriteLine(dr("Name"))
        Next

        Console.WriteLine("------------------使用DataRowView------------------")

        For Each drv As DataRowView In dt.DefaultView
            Console.WriteLine(drv("Name"))
        Next
  • 结果

方法2

Sort后使用dt.DefaultView.ToTable()

dt = dt.DefaultView.ToTable()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值