2009-04-17 5 views
1

Je me bats un peu avec un calcul que je dois faire dans chaque ligne d'un datagridview. Ce que je veux, c'est parcourir toutes les lignes d'un datagridview qui a deux colonnes avec des datetimes. Un représentant un LogInTime et un représentant un LogOutTime. Je souhaite obtenir le nombre total d'heures et de minutes entre toutes les heures de connexion et les heures de déconnexion des lignes affichées dans la vue datagrid. Des suggestions sur la façon de mettre en œuvre cela?Calculer le nombre total d'heures à l'aide des colonnes DateTime dans DataGridView

Répondre

1

À quoi est lié votre DataGridView? Un tel calcul serait plus facile à faire sur le code derrière l'utilisation d'une expression Linq ou d'un appel DataTable.Compute().

Un exemple d'expression Linq:

var minutes = listOfLogins.Sum(l => l.LogOutTime.Subtract(l.LoginTime).TotalMinutes); 
Console.WriteLine("{0}h, {1}m", (int)(minutes/60), minutes % 60); 
+0

Il est lié à un DataTable. Linq n'est malheureusement pas une option ici en raison de la spécification du projet. Je pense que vous avez une bonne suggestion là-bas et je vais essayer de modifier notre code et de voir comment cela fonctionne. Merci! – Henric

+0

Cool. Dans le pire des cas, vous pouvez parcourir le DataTable, mais il est possible d'ajouter les différences DateTime dans un seul appel de méthode Compute ("SUM (...)"). Je ne pense pas que datediff() soit supporté mais ça vaut le coup d'essayer. –

1

Vous pouvez soustraire une date à partir de l'autre pour obtenir une unité de TimeSpan qui vous donnera les données dont vous avez besoin.

Vous aurez besoin de calculer cela dans vos données source, ou dans l'événement lié de données de ligne vous pouvez obtenir les données et faire le calcul.

Questions connexes