DataTable.Select.Where VB.Net - Delete rows



我目前使用我不允许篡改的查询来提取信息:

Dim dt As DataTable = BLL.GetData(variable).Tables(0)

之后,我将删除字段以特定值开头的任何记录:

For Each dr As DataRow In dt.Rows
    If dr.Item(2).ToString().StartsWith("value") Then
        dr.Delete()
    End If
Next

我真正想做的是:

dt.Select.Where(field1 => field1.StartsWith("value")).Delete()

我知道这不是它的语法,我可能与它的样子相距甚远。For Each工作正常,我只是想"简化"它。任何想法?所有的帮助都将受到赞赏。

实际上,您的初始代码可能是最干净,最直接的。

要使用LINQ删除项目,您首先需要将它们读取到单独的集合中,然后循环浏览该集合并在每个记录上调用Delete。如果您想走那条路线,可以尝试:

Dim records = dt.Rows.Where(Function(r) r.StartsWith("value")).ToList()
For Each r In records
    r.Delete()
Next

我认为您正在寻找的答案来自Microsoft。https://msdn.microsoft.com/en-us/library/det4aw50(v = vs.110).aspx?cs-save-lang = 1& cs-lang = vb#code-snippet-2

dim表作为datatable = dataset1.tables(" orders")

' Presuming the DataTable has a column named Date.
Dim expression As String
expression = "Date > #1/1/00#"
Dim foundRows() As DataRow
' Use the Select method to find all rows matching the filter.
foundRows = table.Select(expression)
Dim i As Integer
' Print column 0 of each returned row.
For i = 0 to foundRows.GetUpperBound(0)
   Console.WriteLine(foundRows(i)(0))
Next i

最新更新