如何从C#中的列表集合中获取总持续时间(以分钟为单位) [英] How to get total duration in miutes from list collection in C#

查看:302
本文介绍了如何从C#中的列表集合中获取总持续时间(以分钟为单位)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

  [TestMethod]
        public void GetTotalDurationFor_PassEventInBetween()
        {
            new List<EventItemModel>()
            {
                new EventItemModel() {DateTime = new DateTime(2017,1,1,10,0,0), Event = EventType.Enter},
                new EventItemModel() {DateTime = new DateTime(2017,1,1,10,30,0), Event = EventType.Pass},
                new EventItemModel() {DateTime = new DateTime(2017,1,1,11,30,0), Event = EventType.Leave},
            }.GetTotalDurationFor().Should().Be(90);
        }
            }

THIS TEST FAILES ...

PLEASE HELP





我尝试过:





What I have tried:

public static double GetTotalDurationFor(this IEnumerable<EventItemModel> lst)
        {
            var selectedEmployeDayinout = lst.OrderBy(d => d.DateTime).ToList();
            const int enterExitOperations = 2;
            double duration = 0;

            if ((selectedEmployeDayinout.Count()%enterExitOperations) != 0) return duration;
            for (var i = 0; i < selectedEmployeDayinout.Count(); i ++)
            {
                var enterDate = selectedEmployeDayinout[i].DateTime;
                var leaveDate = selectedEmployeDayinout[i + 1].DateTime;
                duration += leaveDate.Subtract(enterDate).TotalSeconds;
            }
            return duration;
        }

推荐答案

建议:拿一张纸手工完成,然后想一想。

- 你怎么知道使用哪个值?

- 一旦你知道这些值,哪个操作会产生预期结果?

你的程序必须遵循相同的步骤。



我们不做你的家庭作业。

HomeWork不会在乞求别人做你的工作时测试你的技能,它旨在让您思考并帮助您的老师检查您对所学课程的理解以及您在应用这些课程时遇到的问题。

你的任何失败都会帮助你的老师发现你的弱点并设定补救措施。

所以,试一试,重读你的课程并开始工作。如果您遇到特定问题,请显示您的代码并解释这个问题,我们可能会提供帮助。



作为程序员,您的工作是创建算法解决特定问题,你不能依赖别人永远为你做,所以有一段时间你必须学会​​如何。而且越快越好。

当你要求解决方案时,就像试图通过培训其他人来学习开车一样。

创建算法基本上是找到数学并做出必要的调整以适应你的实际问题。



一个有趣的链接,让你开始一个新项目:系统开发生命周期 - 维基百科 [ ^ ]
Advice: Take a sheet of paper and do it by hand, and think.
- How do you know which values to use ?
- Once you know the values, which operation lead to desired result ?
Your program must follow the same steps.

We do not do your HomeWork.
HomeWork is not set to test your skills at begging other people to do your work, it is set to make you think and to help your teacher to check your understanding of the courses you have taken and also the problems you have at applying them.
Any failure of you will help your teacher spot your weaknesses and set remedial actions.
So, give it a try, reread your lessons and start working. If you are stuck on a specific problem, show your code and explain this exact problem, we might help.

As programmer, your job is to create algorithms that solve specific problems and you can't rely on someone else to eternally do it for you, so there is a time where you will have to learn how to. And the sooner, the better.
When you just ask for the solution, it is like trying to learn to drive a car by having someone else training.
Creating an algorithm is basically finding the maths and make necessary adaptation to fit your actual problem.

An interesting link to get you started on a new project: Systems development life cycle - Wikipedia[^]


这篇关于如何从C#中的列表集合中获取总持续时间(以分钟为单位)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆