我做到了这一点。这是找到我的DateTimes集合的最新DateTime的最快方法吗?
我想知道是否有一种方法可以解决我在foreach中所做的事情,但即使有,我也看不出它是如何比我已经准备好的更快。
List<StateLog> stateLogs = db.StateLog.Where(p => p.ProductID == product.ProductID).ToList();
DateTime lastTimeStamp = DateTime.MinValue;
foreach (var stateLog in stateLogs)
{
int result = DateTime.Compare(lastTimeStamp, stateLog.TimeStamp);
if (result < 0)
lastTimeStamp = stateLog.TimeStamp; // sæt fordi timestamp er senere
}
答案 0 :(得分:2)
您可以使用重载运算符比较DateTime
:
foreach (var stateLog in db.StateLog.Where(p => p.ProductID == product.ProductID))
{
if (lastTimeStamp < stateLog.TimeStamp)
lastTimeStamp = stateLog.TimeStamp; // sæt fordi timestamp er senere
}
答案 1 :(得分:0)
stateLogs.OrderByDescending(s=>s.TimeStamp).First(s=>s.TimeStamp)
假设stateLogs是非空集合。
或者,更快的方法是:
stateLogs.Max(s=>s.TimeStamp)
但我不确定它会胜过手动循环。
答案 2 :(得分:0)
你不能让它更快,它本质上是一个O(n)算法。