使用LINQ合并对象列表

Jer*_*emy 9 c# linq

我有两个对象列表,使用Linq我想合并它们,但是当两个列表包含具有相同键的对象时,我只想要具有最大LastUpdated值的那个.

我认为我可以通过关键字a以max(LastUpdated)获得列表分组,然后加入返回加入key和LastUpdated的列表,但必须有更有效的方式...

List<MyObject> lstListA = new List<MyObject>;
List<MyObject> lstListB = new List<MyObject>;

public class MyObject
{
    public string Key {get;set;}
    public string Value {get;set;}
    public DateTime LastUpdated {get;set;}
}
Run Code Online (Sandbox Code Playgroud)

Jon*_*eet 17

一个选项,使用DistinctByMoreLINQ:

var query = lstListA.Concat(lstListB)
                    .OrderByDescending(x => x.LastUpdated)
                    .DistinctBy(x => x.Key);
Run Code Online (Sandbox Code Playgroud)