【问题标题】:Delete more than one row from the datatable从数据表中删除多于一行
【发布时间】:2021-11-04 07:22:49
【问题描述】:

如何删除数据表中的多行? 我想从数据表中删除一些行,例如,从第 10 行到第 35 行。 并将更改保存到数据表。

【问题讨论】:

  • 数据为客户编号,为单列,选择一组特定的数据导出到Excel,然后用两个值指定多个数据,有一个开始和结束取决于用户想要什么并被删除,并且他们没有特定的顺序。

标签: vb.net


【解决方案1】:

您可以使用 LINQ 仅选择所需的行,并将结果复制到数据表中:

Module Module1

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

        For i = 1 To 11
            Dim dr = dt.NewRow()
            dr(0) = i.ToString() & ChrW(i + 64)
            dt.Rows.Add(dr)
        Next

        Return dt

    End Function

    Sub ShowDataTable(dt As DataTable)
        For Each r As DataRow In dt.Rows
            Console.WriteLine(String.Join(", ", r.ItemArray()))
        Next
    End Sub

    Sub Main()
        Dim dt = SampleDataTable()
        Console.WriteLine("Before:")
        ShowDataTable(dt)
        ' Assuming the first row is to be regarded as row number 1.
        Dim firstDelete = 5
        Dim lastDelete = 8

        dt = dt.AsEnumerable().
            Where(Function(r, i) i < firstDelete - 1 OrElse i >= lastDelete).
            CopyToDataTable()

        Console.WriteLine("After:")
        ShowDataTable(dt)

        Console.ReadLine()

    End Sub

End Module

如果你给Where函数提供第二个参数,它会用当前项目的索引(从0开始)填充它。

输出:

Before:
1A
2B
3C
4D
5E
6F
7G
8H
9I
10J
11K
After:
1A
2B
3C
4D
9I
10J
11K

【讨论】:

    猜你喜欢
    • 2023-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-10
    相关资源
    最近更新 更多