我们有一个游泳者数据库,其中包含他们的时间。为了创建一个排名,我们希望获得每个运动员的最快时间。
var rankings = (
from r in _db.Results
orderby r.swimtime
group r by r.athleteid into rg
select new
{
AthleteId = rg.Key,
FirstName = rg.Min(f2 => f2.Athlete.firstname),
Swimtime = rg.Min(f8 => f8.swimtime),
hours = rg.Min(f9 => f9.swimtime.Hours),
minutes = rg.Min(f10 => ("00" + f10.swimtime.Minutes.ToString()).Substring(("00" + f10.swimtime.Minutes.ToString()).Length - 2)), // to get 2 digits in minutes
seconds = rg.Min(f11 => ("00" + f11.swimtime.Seconds.ToString()).Substring(("00" + f11.swimtime.Seconds.ToString()).Length - 2)), // to get 2 digits in seconds
milliseconds = rg.Min(f12 => (f12.swimtime.Milliseconds.ToString() + "00").Substring(0, 2)), // because miliseconds are not always filled
}
);
现在排名已正确创建,但显示的时间不正确。
我知道问题出在哪里,但不知道如何解决:
在数据库中,我们有一个游泳者有 2 次:00:01:02:10 (1min2sec10) 和 00:00:56:95 (56sec95)
我们得到的结果是分钟的最小值 (=00)、秒的最小值 (=02) 和毫秒的最小值 (=10)
导致时间为 00:00:02:10。
我们应该得到的是最快时间的小时、分钟、秒和毫秒(=00:00:56:95)
有人对如何解决这个问题有任何想法吗?