请原谅我下面的伪代码。我很确定有一种不可思议的方式可以在单个linq语句中编写这个语句,这也会显着提高性能。我在这里列出了数百万条AList中的记录。该ID可能不是唯一的。我所追求的是删除所有重复项的原始列表(基于id),但始终以最早的日期抓取记录。有重复的id时,mystring几乎总是不同的值。C#Linq有助于提高性能?
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);
}
我不知道我看到你正在检查'aListNew'的成员身份,或者你如何将新元素添加到'aListNew'。 –
@ReacherGilt我正在通过在原始列表上进行分组来完成它。我使用GroupBy通过ID获取项目,并拉出正确的项目,然后将结果转换为列表。这个实现不需要检查。 –
@ReacherGilt这只是使整个操作更加高效和易于遵循。 –