2

現在、改ざんが許可されていないクエリを使用して情報を取得しています。

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うまくいきます、私はそれを「単純化」しようとしています。何か案が?ありとあらゆる助けをいただければ幸いです。

4

2 に答える 2

3

実際、最初のコードはおそらく最もクリーンで単純です。

LINQ を使用してアイテムを削除するには、最初にアイテムを個別のコレクションに読み込み、次にそのコレクションをループして、各レコードで Delete を呼び出す必要があります。そのルートに進みたい場合は、次の方法を試してください。

Dim records = dt.Rows.Where(Function(r) r.StartsWith("value")).ToList()
For Each r In records
    r.Delete()
Next
于 2012-12-20T19:00:04.803 に答える