【发布时间】:2014-03-10 10:09:08
【问题描述】:
我有一个巨大的List<MyObject>。 MyObject 有一个名为 Timestamp (DateTime?) 的属性和一个 Code (string)。
我需要按每个代码的时间戳获取最后一个对象。
例如使用以下输入:
Code| A | B | Timestamp
A1 | ABC | DEF | Fri 7 Mar 2014
B2 | ABC | GHI | Thu 6 Mar 2014
A1 | DEF | GHI | Mon 10 Mar 2014
B2 | DEF | GHI | Fri 7 Mar 2014
C3 | GHI | JKL | Fri 7 Mar 2014
我需要得到这个:
Code| A | B | Timestamp
A1 | DEF | GHI | Mon 10 Mar 2014
B2 | DEF | GHI | Fri 7 Mar 2014
C3 | GHI | JKL | Fri 7 Mar 2014
为了做到这一点,我做了以下功能:
private List<MyObject> GetLastsObjects(List<MyObject> input)
{
var output = input.Where(x => x.Timestamp == x.Where(y => y.Code == y.Code)
.Max(tmp => tmp.Timestamp))
.ToList();
return output;
}
它有效,但我的表现真的很糟糕,输入量很大......
你知道我该如何优化这个功能吗?按每个代码的时间戳获取最后一个元素的最快方法是什么?
【问题讨论】:
标签: c# linq list datetime timestamp