我有以下课程
public class Application
{
    public int Id { get; set; }
    public int Version { get; set; }
    (...)
}
我有以下几点IEnumerable<Application>:
IEnumerable<Application> applications1 = new List<Application>
{
    new Application {Id = 1, Version = 1},
    new Application {Id = 2, Version = 1},
    new Application {Id = 3, Version = 3}
};
IEnumerable<Application> applications2 = new List<Application>
{
    new Application {Id = 1, Version = 2},
    new Application {Id = 3, Version = 2}
    new Application {Id = 4, Version = 1}
};
如何IEnumerable<Application>使用 LINQ将它们合并为一个,同时确保如果两个Applications相同,Id只有最高的一个Version被添加到新的IEnumerable<Application>,有效地我的最终`IEnumerable 应该相当于:
IEnumerable<Application> final = new List<Application>
{
    new Application {Id = 1, Version = 2},
    new Application {Id = 2, Version = 1},
    new Application {Id = 3, Version = 3},
    new Application {Id = 4, Version = 1}
}
您可以通过以下方式GroupBy与在组中选择最大值结合使用Aggregate:
IEnumerable<Application> final = applications1
    .Concat(applications2)
    .GroupBy(a => a.Id)
    .Select(g => g.Aggregate((acc, curr) => acc.Version > curr.Version ? acc: curr))
    .ToList();
| 归档时间: | 
 | 
| 查看次数: | 193 次 | 
| 最近记录: |