首页 > 解决方案 > 如何使用 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 有没有办法真正做到这一点,即。

标签: c#linqmorelinq

解决方案


我制定了这样的东西。请检查:

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)  };

推荐阅读