我们假设我们有多个值与剩余时间相结合,例如以下列表:
220 - 1 minute left
150 - 2 minutes left
600 - 13 minutes left
180 - 2 hours left
540 - 1 hour left
400 - 1.5 hours left
剩下的时间很少超过两个小时,但理论上可以是任何东西。所以,让我们说当时剩下的最长时间是未知的。这些值随时间或多或少地增加。目标是按时间基于最低值对列表进行排序。在示例列表中,我希望结果接近:
150 - 2 minutes left
220 - 1 minute left
180 - 2 hours left
400 - 1.5 hours left
540 - 1 hour left
600 - 13 minutes left
我不擅长数学,而且我不完全确定将这种方式排序的最佳方法是什么。基本上,应该在一定程度上考虑时间,以确定最佳顺序。
我将详细阐述这个问题,因为似乎问题不清楚。这些值代表某个项目(食品,木材等)的多个出价。我想基于用户在进入期间获得的机会来显示排序。例如,某些商品经常无法获得出价,因为这些商品是免费赠送的,所以仍然有机会赢得一些商品。
答案 0 :(得分:1)
将您的值放在List<T>
T
为class
且int Score
属性和TimeSpan TimeLeft
属性。
然后您可以执行以下操作:
var sortedList = originalList.OrderBy(x => x.Score + x.TimeLeft.TotalMinutes).ToList();
根据您的示例(括号中的订单值):
150 - 2 minutes left (152)
220 - 1 minute left (221)
180 - 2 hours left (300)
400 - 1.5 hours left (490)
540 - 1 hour left (600)
600 - 13 minutes left (613)
答案 1 :(得分:0)
我的建议是:
使用Regex
获取时间
将时间转换为分钟(或秒,无论它是什么)
按转换时间排序