---
title: "Bästa sättet att ta bort rader från en datatable?"
type: "forum-thread"
url: "https://www.webforum.nu/amne/dotnet/149268-bästa-sättet-att-ta-bort-rader-från-en-datatable"
topic: ".NET"
topic_url: "https://www.webforum.nu/amne/dotnet"
author: "Lukaspojken"
published: "2006-07-21T09:33:19.000Z"
updated: "2006-10-22T21:20:05.000Z"
replies: 5
views: 548
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/dotnet/149268-bästa-sättet-att-ta-bort-rader-från-en-datatable"
---

# Bästa sättet att ta bort rader från en datatable?

## #1 — Lukaspojken, 2006-07-21T09:33Z

Anta att vi har en datatable med cirka 200 rader. I denna datatable finns en kolumn som heter TypeCode. Det jag vill är att på ett effektivt sätt ta bort alla TypeCode som inte är lika med "Container". Hur gör man detta på bästa sätt?

Kom gärna med förslag på en bättre lösning än den nedan. För det borde väl finnas andra bättre sätt att göra detta på än att loopa, eller?

```
DtaData.DefaultView.RowFilter = "TypeCode <> 'Container'"
For Each item As DataRowView In DSData.DefaultView
                    item.Row.Delete()
Next
```

Permalänk: https://www.webforum.nu/p/149268

## #2 — emission, 2006-07-21T10:34Z

Nej, det finns inget annat sätt. En datatable är ingen databas, och bör inte användas som en.

Du kan ju alltid använda en DataView med RowFilter = "TypeCode = 'Container'".

Permalänk: https://www.webforum.nu/p/1843642

## #3 — Lukaspojken, 2006-07-21T11:27Z

Dessa tre varianter har jag kommit fram till. Tredje alternativet kan jag tänka är bra att använda sig av om vi det är stora datamängder. Jag ska göra en liten prestanda test för att se lite hur det ser ut. Återkommer om jag kommer fram till något...

For Each item As DataRow In DtaData.Select("TypeCode \<\> 'Container'")
    item.Row.Delete()
Next
 
 
DtaData.DefaultView.RowFilter = "TypeCode \<\> 'Container'"
For Each item As DataRowView In DSData.DefaultView
                    item.Row.Delete()
Next
 
 
DtaData.DefaultView.RowFilter = "TypeCode = 'Container'"
DtaContainers = DtaData.DefaultView.Table
 
 
For LoopCounter = 0 To DtaData.Rows.Count - 1
    If DtaData.Rows(LoopCounter)("TypeCode") \<\> "Container" Then
        DtaData.Rows(LoopCounter).Delete()
    End if
Next

Permalänk: https://www.webforum.nu/p/1843651

## #4 — emission, 2006-07-21T11:36Z

Måste du verkligen radera raderna? En DataView med RowFilter = "TypeCode = 'Container'" borde väl räcka?

Permalänk: https://www.webforum.nu/p/1843652

## #5 — Lukaspojken, 2006-07-21T13:04Z

Så här blev här blev resultatet av prestandatestet. Testet gjordes i C#. Antal i datatable:n var 2000 rader. Testet gjordes också med 20000 men det blev samma resultat. Medelvärdet ökade bara på alla...

Slutsatsen är att använda enkel for-loop för att radera rader och inte rowfilter.

            **/\*ETTA - medelvärde 6 ms (Bäst i test)**
             \* for (int i = 0; i \< AbsenceData.Rows.Count; i++)
            {
                if (AbsenceData.Rows*\["Id"\].ToString() == "10")
                {
                    AbsenceData.Rows*.Delete();
                }
            }\*/
 
            **/\*TVÅA - medelvärde 15,6 ms**
             \* foreach (DataRow item in AbsenceData.Select("Id = 10"))
            {
                item.Delete();
            }\*/
 
            **/\*TREA - medelvärde 81,1 ms**
             \* DataTable tmpDT = new DataTable();
            AbsenceData.DefaultView.RowFilter = "Id = 10";
            tmpDT = AbsenceData.DefaultView.Table;\*/
 
            **/\*FYRA - medelvärde 102,3 ms (Sämst i test)**
             \* AbsenceData.DefaultView.RowFilter = "Id = 10";
            foreach (DataRowView item in AbsenceData.DefaultView)
            {
                item.Row.Delete();
            }\*/**

Permalänk: https://www.webforum.nu/p/1843684

## #6 — Nickemannen, 2006-10-22T21:20Z

Det hade varit intressant att veta hur det hade gått om det hade gällt fler parametrar än 1.

Permalänk: https://www.webforum.nu/p/1886465

---

Tråden på webben: https://www.webforum.nu/amne/dotnet/149268-bästa-sättet-att-ta-bort-rader-från-en-datatable
