C#学习教程:在C#中使用时间跨度简化ifelse条件在下面的代码中,条件检查星期几,然后检查当前时间并在必要时生成报告。这是代码:protectedvoidsample(){TimeSpanzerothHour=newTimeSpan(00,0,0);TimeSpanfirstHour=newTimeSpan(01,0,0);TimeSpansecondHour=newTimeSpan(02,0,0);TimeSpanthirdHour=newTimeSpan(03,0,0);TimeSpanfourthHour=newTimeSpan(04,0,0);TimeSpanfifthHour=newTimeSpan(05,0,0);TimeSpansixHour=newTimeSpan(06,0,0);//依此类推直到第二十四小时DateTime.Now.TimeOfDay=ninthHour&&DateTime.Now.TimeOfDay=tenthHour&&DateTime.Now.TimeOfDay<=elevantHour){}//以此类推整个时间周期}}上面的代码只针对周一,我也是一周的其他六天也必须这样做。当我在每个条件下添加查询时,它就像数百行。那么我有更好的方法不用写几百行代码就可以做到这一点吗?请告诉我。提前致谢。它能为您提供帮助吗?varsqls=new[]{"selectxfromy","selectwfromq",//etc-24options};varsql=sqls[DateTime.Now.Hour];甚至:varsqls=newAction[]{()=>{/*sqlformidnight*/},()=>{/*sqlfor1am*/},//etc()=>{/*晚上11点的sql*/},};varsql=sqls[DateTime.Now.Hour];sql.Invoke();如果你想要DayOfWeek和Hour那么你可以使用:varsqls=newstring[][]{new[]{"selectxfromy","selectwfromq",},new[]{"selectxfromy","从q中选择w",},new[]{"从y中选择x","从q中选择w",},new[]{"从y中选择x","从q中选择w",},new[]{“从y中选择x”,“从q中选择w”,},new[]{“从y中选择x”,“从q中选择w”,},new[]{“从y中选择x”","从q中选择w",},};varsql=sqls[(int)DateTime.Now.DayOfWeek][DateTime.Now.Hour];根据评论和其他答案,这是一种更简洁的方法:stringday=DateTime.Now.DayOfWeek.ToString().Substring(0,3);string[]shifts=new[]{"('22:00-7:00')","('22:00-7:00','6:00-15:00')",//24};字符串shift=shifts[DateTime.Now.Hour];stringsql=$"SELECTagentloginFROMagentdetailsWHERElocation='PNQ10-Pune'ANDshiftIN{shifts}AND{day}='W'";听起来像你代码可以通过动态生成SQL大大简化我猜了一下,因为我不完全了解您的数据模型,但以下内容:vardayColumns=new[]{"Sun","Mon","Tue","Wed","Thu","Fri","星期六"};varcurrentDayColumn=dayColumns[(int)DateTime.Now.DayOfWeek];换弦;switch(DateTime.Now.Hour){案例0:shifts="('22:00-7:00')"break;case6:shifts="('22:00-7:00','6:00-15:00')"休息;//TODO-更多案例}stringsql="SELECTagentloginFROMagentdetailsWHERElocation='PNQ10-Pune'ANDshiftIN"+shifts+"AND"+currentDayColumn+"='W'";如果您可以将类更改为具有开始时间和结束时间的两列,则可以进一步优化它,如下所示:+">=shift_start_hourAND"+hour+"假设你的SQL也依赖于WeekDay+Hour(不然意义不大?)你可以这样做:以上是C#学习教程:在c#中使用timespan来简化ifelse条件分享的全部内容,如果对大家有用还需要进一步了解C#学习教程,希望大家多多关注---protectedvoidsample(){varnow=DateTime.Now;varsql=GetSql(now.DayOfWeek,now.Hour);//执行sql}protectedstringGetSql(DayOfWeekdayofweek,inthour){//生成sql,需要时使用"(int)dayofweek"}本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。
