C#按时间倒序排列列表
我正在sql server数据库中将时间字段保存为nvarchar(“HH:mm”)格式 根据大家的建议。现在,我将时间以日期时间格式保存在sql server数据库中。虽然我不需要日期部分,但是我会使用这个属性,这样我就可以达到我想要达到的效果。 现在我要做的是,根据当前执行时间,以逆时间顺序获取行列表。例如,如果我的表格如下所示:C#按时间倒序排列列表,c#,linq,datetime,C#,Linq,Datetime,我正在sql server数据库中将时间字段保存为nvarchar(“HH:mm”)格式 根据大家的建议。现在,我将时间以日期时间格式保存在sql server数据库中。虽然我不需要日期部分,但是我会使用这个属性,这样我就可以达到我想要达到的效果。 现在我要做的是,根据当前执行时间,以逆时间顺序获取行列表。例如,如果我的表格如下所示: tblFavoriteTime ID Time Post 1 05:00 AM Something.. 2 09:00
tblFavoriteTime
ID Time Post
1 05:00 AM Something..
2 09:00 AM Another..
3 12:00 PM Hello..
4 01:00 PM Its 8 am..
var mylist = _repository.GetAll().ToList()
.OrderBy(x => x.TimeStamp.TimeOfDay() .......);
//as I explained, Im only getting the time of day though its a datetime object, date part wont matter..
当我在下午12:00访问该站点时,我需要按时间倒序排列的时间列表。因此,12:00PM将位于列表的顶部,12:00PM->11:00AM->10:00AM->。。。。凌晨1:00->凌晨12:00->下午1:00->下午2:00->。。。。。晚上11:00
使用上述数据,我应该得到:
ID Time Post
3 12:00 PM Hello...
2 09:00 AM Another..
1 05:00 AM Something..
4 01:00 PM Its 1 pm..
有没有一种方法可以使用LinQ.OrderBy()
或类似的东西来实现这一点:
tblFavoriteTime
ID Time Post
1 05:00 AM Something..
2 09:00 AM Another..
3 12:00 PM Hello..
4 01:00 PM Its 8 am..
var mylist = _repository.GetAll().ToList()
.OrderBy(x => x.TimeStamp.TimeOfDay() .......);
//as I explained, Im only getting the time of day though its a datetime object, date part wont matter..
请帮忙 这是你想要的吗
var times = new [] { "10:30", "22:40", "12:00", "10:00", "13:00", "08:00", };
var output = times.OrderByDescending(x => (x.CompareTo("10:00") <= 0 ? "Z" : "") + x);
我得到了与上面相同的结果。如果你被一个nvarchar
卡住了,那么你可以先解析到一个时间跨度,例如
var times = new [] { "10:30", "22:40", "12:00", "10:00", "13:00", "08:00", };
var output = times.OrderByDescending(x => TimeSpan.Parse(x));
TimeSpan now=DateTime.now.TimeOfDay//实地考察时间
var query=rows.ToList()
.OrderBy(x=>x.TimeStamp.TimeOfDay x.TimeStamp.TimeOfDay);
排序后的最后13:00是怎样的?为什么要将一个存储为nvarchar?@EhsanSajjad让我们假设你有一个时钟,当你在12:00AM查看它时,想象时钟是逆时针运行的,12AM->11AM->…->>凌晨1点->中午12点-下午1点
这应该是优惠时间。OrderByDescending(x=>x.Time)
@super user一个坏习惯不能证明另一个坏习惯是正确的。使用适当的类型来存储时间值。例如,勾号保证了问题,因为它们没有时区,不知道夏令时,范围非常有限(特别是如果是int),没有正确排序或排序的可能性(由于缺少tz偏移)。是的,我正在尝试这样的输出。但是我应该引用什么来使用CompareTo(),调用它时我会看到红色的曲线,我的vs2013无法自动解析它如果我有一个DateTime对象数组,我该如何使用它?我试图按照评论部分的建议使用适当的DateTime属性。非常感谢。工作完美。
TimeSpan now = DateTime.Now.TimeOfDay; //site visit time
var query = rows.ToList()
.OrderBy(x => x.TimeStamp.TimeOfDay <= now ? 1 : 2)
.ThenByDescending(x => x.TimeStamp.TimeOfDay);