请原谅我下面的伪代码。我很确定有一种神奇的方法可以在单个 linq 语句中编写它,这也将显着提高性能。在这里,我有一个 AList 中数百万条记录的列表。id 可能不是唯一的。我所追求的是删除所有重复项(基于 id)的原始列表,但始终获取最早日期的记录。当 id 重复时,mystring 几乎总是一个不同的值。
public class A
{
public string id { get; set; }
public string mystring { get; set; }
public DateTime mydate { get; set; }
}
List<A> aListNew = new List<A>();
foreach (var v in AList)
{
var first = AList.Where(d => d.id == v.id).OrderBy(d => d.mydate).First();
// If not already added, then we add
if (!aListNew.Where(t => t.id == first.id).Any())
aListNew.Add(first);
}