c# - 使用 LINQ 合并对象列表

标签 c# linq

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

我想我可以通过 max(LastUpdated) 以某种方式获得一个按键 a 分组的列表,然后返回到按键和 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;}
}

最佳答案

一个选项,使用来自 MoreLINQDistinctBy :

var query = lstListA.Concat(lstListB)
                    .OrderByDescending(x => x.LastUpdated)
                    .DistinctBy(x => x.Key);

关于c# - 使用 LINQ 合并对象列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2298207/

相关文章:

java - 为什么C#对 'Constructor call must be the first statement in a constructor'没有限制

c# - 有什么方法可以像 php 一样在 C# 中创建标准类和对象

c# - 不能将基本类型的变量作为输出参数传递?

c# - Linq .Select()/.SelectMany() 自动使用第二个可选参数

c# - 检查 list1 内容是否与 list2 内容匹配

c# - 在内存中没有负载基础的情况下使用 LinqToSql

C# LINQ 按对象属性排序列表,选择 X 金额

c# - GridView SelectedIndexChanging 事件,在 TemplateField 中查找文本

c# - 在 C# 中使用 FileSystemWatcher 确定复制/写入进度

c# - LINQ 查询中的 List<T>.Contains(T) 出错