Toon posts:

[C#] DataTable.Compute en datetime

Pagina: 1
Acties:

Onderwerpen


  • siepeltjuh
  • Registratie: maart 2003
  • Niet online
In een DataTable heb ik een kolom met een start (DateTime) en eind (DateTime)

Nu zou ik graag het eerste start tijdstip en het laatste eind tijstip ophalen.

Onderstaande doet het heel netjes, maar betrekt ook de datum in de expressie, ik ben alleen naar het vroegste tijdstip op zoek.

DataTable.Compute("Min(start), String.Empty);
en
DataTable.Compute("Max(eind), String.Empty);

Natuurlijk zou ik de datatable kunnen lopen, maar volgens mij moet dat eenvoudiger/netter kunnen. Op MSDN http://msdn.microsoft.com...atacolumn.expression.aspx heb ik wel het e.e.a. gelezen over de expressie zelf, maar kan niet vinden hoe ik de datetime column kan aanpassen, ik begrijp ook neit helemaal of en hoe ik het convert stukje hier in kan toepassen.

Ik probeer iets te bereiken in de zin van:
DataTable.Compute("Min(Date(start, "HH:II")), String.Empty);

Maar andere oplossingen zijn ook welkom :)

Can`t live without the mods


  • Face_-_LeSS
  • Registratie: september 2004
  • Niet online
Je zou het eenvoudig met een loopje kunnen oplossen...
of met LinQ, zoiets:

C#:
1
2
TimeSpan min = table.AsEnumerable().Select(r => r.Field<DateTime>("Start").TimeOfDay).Min();
TimeSpan max = table.AsEnumerable().Select(r => r.Field<DateTime>("End").TimeOfDay).Max();

  • siepeltjuh
  • Registratie: maart 2003
  • Niet online
Aaaah thnx, Linq vind ik er toch een stuk eleganter uitzien dan een dom loopje, geen idee of het ook echt sneller gaat, maar thnx!

Ondertussen wat meer gelezen over Linq, best handig :) Voor mensen die ooit op deze post uit gaan komen: http://msdn.microsoft.com/en-us/netframework/aa904594.aspx

Can`t live without the mods


  • Caelorum
  • Registratie: april 2005
  • Laatst online: 25-09 09:48
LINQ gebruikt zelf dan ook gewoon een loopje maarja :)

  • boe2
  • Registratie: november 2002
  • Niet online

boe2

'-')/

Caelorum schreef op vrijdag 29 oktober 2010 @ 20:27:
LINQ gebruikt zelf dan ook gewoon een loopje maarja :)
Dat hangt toch echt af van op welk soort objecten je linq gebruikt :)

'Multiple exclamation marks,' he went on, shaking his head, 'are a sure sign of a diseased mind.' - Pratchett.


  • Caelorum
  • Registratie: april 2005
  • Laatst online: 25-09 09:48
Boeboe schreef op vrijdag 29 oktober 2010 @ 20:53:
[...]
Dat hangt toch echt af van op welk soort objecten je linq gebruikt :)
Op een Enumerable, uit zijn code, een Select statement uitvoeren en daar de minimum van gebruiken resulteert toch gewoon in code met een for-loop constructie?

Hij zei dat het er eleganter uitzag dan een for-loop, maar het resulteert uiteindelijk toch wel in vergelijkbare code in dit geval, lijkt me.

[Voor 17% gewijzigd door Caelorum op 30-10-2010 09:00. Reden: zomg minstens 3 taalfouten :O]


  • roy-t
  • Registratie: oktober 2004
  • Laatst online: 22-09 19:19
Ja let daar echt op, de grote fout die vaak met LinQ wordt gemaakt is dat het er eleganter uit ziet. Terwijl bijna alle LinQ code juist resulteert in erg inefficiente algoritmen.

Bij LinQ denk je aan een soort SQL voor objecten, maar dat is alleen in syntax zo. Een object met een bepaalde eigenschap zoeken in een lijst is met LinQ gewoon O(N). Terwijl je bij een database verwacht dat dit in O(<N) gebeurt.

Verder kan jouw precieze probleem ook niet sneller dan O(N) omdat je alle elementen af moet om de laagste (of hoogste te vinden). Tenzij de lijst al gesorteerd is natuurlijk :) .

~ Mijn prog blog! ~ @RoyTries


  • siepeltjuh
  • Registratie: maart 2003
  • Niet online
Misschien dat het 'achter de schermen' alsnog geloopt wordt, dat is jammer, maar het is wel veel duidelijker in de sourcecode, alleen dat voordeel is al genoeg voor mij om het zo te gebruiken.

Daarnaast programmeert het veel sneller als je Linq een beetje kent (denk ik, ik heb er nog heel weinig ervaring mee) dan dat je alles voluit moet typen, wat ook weer foutgevoeliger is.

In ieder geval is mijn probleem opgelost. Om een 'hoe handig is linq' discussie en slotje te voorkomen graag alleen eventuele manieren om dit sneller beter af te handelen vermelden. :)

Can`t live without the mods

Pagina: 1


Nintendo Switch (OLED model) Apple iPhone 13 LG G1 Google Pixel 6 Call of Duty: Vanguard Samsung Galaxy S21 5G Apple iPad Pro (2021) 11" Wi-Fi, 8GB ram Nintendo Switch Lite

Tweakers vormt samen met Hardware Info, AutoTrack, Gaspedaal.nl, Nationale Vacaturebank, Intermediair en Independer DPG Online Services B.V.
Alle rechten voorbehouden © 1998 - 2021 Hosting door True

Tweakers maakt gebruik van cookies

Bij het bezoeken van het forum plaatst Tweakers alleen functionele en analytische cookies voor optimalisatie en analyse om de website-ervaring te verbeteren. Op het forum worden geen trackingcookies geplaatst. Voor het bekijken van video's en grafieken van derden vragen we je toestemming, we gebruiken daarvoor externe tooling die mogelijk cookies kunnen plaatsen.

Meer informatie vind je in ons cookiebeleid.

Sluiten

Forum cookie-instellingen

Bekijk de onderstaande instellingen en maak je keuze. Meer informatie vind je in ons cookiebeleid.

Functionele en analytische cookies

Deze cookies helpen de website zijn functies uit te voeren en zijn verplicht. Meer details

janee

    Cookies van derden

    Deze cookies kunnen geplaatst worden door derde partijen via ingesloten content en om de gebruikerservaring van de website te verbeteren. Meer details

    janee