c# - 如何使用 linq 或 moreLinq 比较和合并列表
问题描述
我有两个 KeyValuePair 类型的列表。
值如下
List A
2019-01-01 1
2019-01-02 0
2019-01-03 1
List B
2019-01-01 0
2019-01-03 1
我想合并这两个列表,所以它看起来像这样
List C
2019-01-01 0 //item from list B
2019-01-02 0 //item from list A, missing date in List B
2019-01-03 1 //item from list A - items are the same in list A and B
Linq 或 MoreLinq 有没有办法真正做到这一点,即。
- 合并两个列表中的项目
- 如果列表 B 中不存在相同的项目,则使用列表 A 中的项目
- 如果不相等,则将列表 A 中的项目替换为列表 B 中的项目
解决方案
我制定了这样的东西。请检查:
var q =
from a in ListA
join b in ListB on a.Dt equals b.Dt into j
from b in j.DefaultIfEmpty()
select new { Date=a.dt, Val = a.val == b?.val ? a.val : (b?.val ?? a.val) };
推荐阅读
- java - 我的代码确实应该打印它不起作用的素数之间的差距。“没有错误”
- typescript - Typescript Http请求发送表单数据
- python - 如何在 for 循环中计数值作为我的字典键的一部分
- mysql - 如何获取对象的动态 ID 并在 Laravel 中显示与其相关的数据
- javascript - TypeError:navList.insertAdjacentHTML 不是函数
- python - 为菜单系统运行代码时出现 2 个错误
- php - 我怎样才能使 PHP 只写入一次被选中的列表?
- android - 配备 M1 Max 芯片的新 MacBook Pro 上的 Android Studio?
- regex - 正则表达式匹配shell脚本中数组中的数字
- regex - 使用 Blueprism 提取正则表达式