c# - 在 C# 中合并两个列表

标签 c# list merge

我想将两个具有不同属性的列表合并到一个列表中,但是在合并它时,我想检查在这个特定示例中两个列表中是否有确切的日期,如果有,我想从该元素中获取两个属性,并将它们合并到另一个列表中的一个元素中

列表 1:

List<object> r1 = (from x in sp1 select new 
                   { 
                     x.Imported, 
                     x.Period 
                   }).ToList<object>();

L1 结果:

enter image description here

列表 2:

List<object> r2 = (from x in sp2 select new 
                   { 
                     x.Dissolution, 
                     x.Period 
                   }).ToList<object>();

L2 结果:

enter image description here


想要的结果:

enter image description here

现在,这是我合并 r1 和 r2 的方式:

 List<object> r3 = new List<object>(r1.Concat(r2));

最佳答案

你可以将它们转换成相同的类型并使用这样的东西

r1
.Select(x => new { Imported = x.Imported, Dissolution = null, Period = x.Period)
.Concat(
    r2.Select(x => new { Imported = null, Dissolution = x.Dissolution, Period = x.Period))
.GroupBy(x => x.Period)
.Select(x => new { Imported = x.Max(e => e.Imported),
                   Dissolution = x.Max(e => e.Dissolution),
                   Period = x.Key);

关于c# - 在 C# 中合并两个列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24652516/

相关文章:

c# - AppFabric 缓存 - 它对对象的序列化和反序列化要求是什么?

list - Prolog - 检查两个列表是否具有除一个之外的相同元素

mysql - 如何将列表传递给mysql过程?

python - 在不同的列名上合并两个不同的数据框

python - 如何将多个 Excel xlsm 文件与多个工作表合并到一个数据集中?

C# IL - 调用构造函数

c# - ObservableCollection 逐元素变换/投影包装器

返回单个骰子的 Python 骰子类

Ruby 合并 n 个哈希元素并取中间键

c# - 为什么 `String.Trim()` 不修剪对象本身?