Рассчитать общее количество часов, используя столбцы DateTime в DataGridView

Я немного борюсь с расчетом, который мне нужно делать в каждой строке в представлении данных. Я хочу просмотреть все строки в datagridview, который имеет два столбца с датой и временем. Один представляет LogInTime, а другой представляет LogOutTime. Я хотел бы получить общее количество часов и минут между всеми входами в систему и выходом из системы для строк, отображаемых в datagridview. Любые предложения о том, как это реализовать?


person Henric    schedule 17.04.2009    source источник


Ответы (2)


К чему привязан ваш DataGridView? Подобные вычисления было бы проще выполнить в коде с использованием выражения Linq или вызова DataTable.Compute().

Пример выражения Linq:

var minutes = listOfLogins.Sum(l => l.LogOutTime.Subtract(l.LoginTime).TotalMinutes);
Console.WriteLine("{0}h, {1}m", (int)(minutes / 60), minutes % 60);
person Matt Hamilton    schedule 17.04.2009
comment
Он привязан к DataTable. Linq, к сожалению, здесь не подходит из-за спецификации проекта. Я думаю, у вас есть хорошее предложение, и я попытаюсь изменить наш код и посмотреть, как он работает. Спасибо! - person Henric; 17.04.2009
comment
Прохладный. В худшем случае вы можете просмотреть DataTable в цикле, но может оказаться возможным сложить различия DateTime в одном вызове метода Compute(SUM(...)) . Я не думаю, что datediff() поддерживается, но стоит попробовать. - person Matt Hamilton; 17.04.2009

Вы можете вычесть одну дату из другой, чтобы получить блок TimeSpan, который даст вам необходимые данные.

Вам нужно будет рассчитать это в исходных данных или в событии привязки данных строки, которое вы можете получить и выполнить расчет.

person cjk    schedule 17.04.2009