Avatar billede sbi Nybegynder
06. oktober 2004 - 13:58 Der er 9 kommentarer og
1 løsning

Sum af Kolonne

Et (Håber jeg) enkelt spg.

Jeg har i min codebehind en DataTable

DataSet.Tables(0)

Jeg vil gerne trække summen af kolonne 4 ud.
Hvordan gør jeg det?

/SBI
Avatar billede arne_v Ekspert
06. oktober 2004 - 14:02 #1
Lader en løkke løbe gennem alle rækker og ligge sammen ?
Avatar billede anhansen Nybegynder
06. oktober 2004 - 14:05 #2
DataTable dt = DataSet.Tables[0];
double sum = 0;
foreach(DataRow dr in dt.Rows())
{
  sum += Convert.ToDouble(dr[3]);
}

Sådan cirka..

eller sum = sum + Convert.ToDouble(dr[3]);

kolonnen kan også skrives som dr["kolonnenavn"] hvis du har lyst
Avatar billede sbi Nybegynder
06. oktober 2004 - 14:06 #3
Det er en mulighed, men i DataTables kan man så mange smarte ting, det må kunne gøres mere elegant.

/SBI
Avatar billede arne_v Ekspert
06. oktober 2004 - 14:15 #4
Jeg mener at man kan:

decimal sum = (decimal)dindatatable.Compute("SUM(feltnavn)");

Men det laver jo også en løkke !
Avatar billede anhansen Nybegynder
06. oktober 2004 - 14:17 #5
Hvad mener du mere elegant?
Med en indbygget metode på datatable?
Det mener jeg ikke der er.
Dette er da også ok. Hvis du skal bruge summen fra to kolonner kan du nøjes med at løbe det igennem en gang - istedet for at skulle igennem dem to gange hvis der var indbygget metode på datatable.
Avatar billede anhansen Nybegynder
06. oktober 2004 - 14:28 #6
Og der blev jeg så lige modbevist... hehe.. lidt.. Compute ser ud til at være fin til formålet.. Den var jeg lige hoppet over da jeg kiggede i reference...
Avatar billede sbi Nybegynder
06. oktober 2004 - 14:45 #7
Tak det var lige hvad jeg mente (Svaret fra Arne V)
Husk lige at ligge et svar så du kan få dine point.

Det jeg endte med at bruge er i VB og ser således ud:
Dim sum As Decimal = CType(rtn_Pricetbl.Compute("SUM([unit price line])", ""), Decimal)

/SBI
Avatar billede anhansen Nybegynder
06. oktober 2004 - 14:52 #8
ok... Men husk at hvis du skal bruge sum for flere kolonner, f.eks pris, moms og ialt så er det hurtigere at gøre det som vi foreslog først - da du så ikke kører 3 løkker igennem.
Men det er selvfølgelig op til dig hvor vigtigt det er, kontra nemmere at skrive. :-)
Avatar billede arne_v Ekspert
06. oktober 2004 - 14:57 #9
Jeg tror at løkken er hurtigere uanset hvad.

Den compute parser formentlig tekst strengen med kommando og
fortolker den.

Mange gange hurtigere med en simpel løkke.

Men det er ihvertfald en smart lille feature.
Avatar billede arne_v Ekspert
06. oktober 2004 - 14:58 #10
svar
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester