webForumDet fria alternativet

datatable: söka och räkna rader

.NET

1 svar · 197 visningar · startad av cyprys

Medlem sedan dec. 20003 563 inlägg
Frågan#1

Jag har en datatable med ett antal poster.

Vad jag vill göra är att jämföra ett antal kolumner med fasta variabler och sedan fylla på en av fyra räknare beroende på vad jämförelserna ger för resultat. (räknare a+=1 om kolumn1 och 2 = 0, räknare b+=1 om om kolumn 2 = 1 t.ex.)

Nu vet jag inte vilket som är det bästa sättet att göra detta på. dt.select() eller att loopa igenom hela datatablen en gång och fylla loopen med en massa if-satser?

Är inte så hemma på select-varianten och tänkte höra om det är så mycket smidigare då den antagligen kommer få behöva gå igenom datatablen 4 ggr. (stämmer?)

Finns det annars något utelämnat alternativ?

Medlem sedan apr. 2004778 inlägg
#2

Snabb kommentar om loopen.

Varför behöver du gå igenom 4 gånger? Det borde räcka med en gång.
Du loopar igenom raderna, sedan kolumnerna. För varje kolumen kollar du sedan alla dina räknare. Om en räknare baseras på två kolumner sätter du en flagga. När räknarens alla kolumner är kontrollerade och flaggan är true så ökas räknaren på.

Efter att ha loopat en gång så ska du ha alla räknare uppdaterade.

Med select så ställer du en vanlig SQL-fråga. Då får du göra en select för varje räknare.

Är inte säker på vad som är mest prestandakrävande men du kan ju prova.

Beroende på hur mycket innehåll du har så får man välja lösningen.
Är det många rader så kanske loopen är fel val.
Är det väldigt många rader så kanske det är bättre att göra en SQL-fråga mot databasen som gör uträkningen istället för att göra det i koden.

262 ms totalt · 4 externa anrop · v20260731065814-full.2f471f9e
130 ms — deklarationer (db)
0 ms — hämta statistik (cache)
128 ms — hämta tråd, inlägg och bilagor (db)
131 ms — ändringar (db)