C#Linq有助于提高性能吗?

dow*_*one 1 c# linq

请原谅我下面的伪代码.我很确定有一种神奇的方法可以在单个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);
}
Run Code Online (Sandbox Code Playgroud)

Ree*_*sey 5

您可以直接使用分组在一个LINQ语句中完成此操作:

List<A> aListNew = AList
                   .GroupBy(d => d.id)
                   .Select(g => g.OrderBy(i => i.mydate).First())
                   .ToList();
Run Code Online (Sandbox Code Playgroud)