gpt4 book ai didi

c# - 如何根据公共(public)属性加入两个列表

转载 作者:太空狗 更新时间:2023-10-29 17:35:49 24 4
gpt4 key购买 nike

假设我有两个 Lists<myObject>其中 myObject由两个属性组成

Id(类型为 Int)和

(类型 Double)

我需要从这两个列表中获取一个由(匿名)对象组成的列表,如下所示:

Id, [Double value from List 1], [Double value from List 2]

因此,如果对于给定的 Id,两个列表都包含一个值,它应该如下例所示:

12, 21.75, 19.87

如果一个列表不包含具有另一个列表中存在的 Id 的对象,则该值应为 null:

15, null, 22.52

我怎样才能做到这一点?更新: 当然,我知道如何获得这样的列表,但我正在寻找最高效的方法,最好是使用一些机智的 Linq 魔法.

最佳答案

不确定这有多优化,但应该适合您的需求 - 假设我了解您想要什么:

var enumerable1 = new[]
{
new {Id = "A", Value = 1.0},
new {Id = "B", Value = 2.0},
new {Id = "C", Value = 3.0},
new {Id = "D", Value = 4.0},
new {Id = "E", Value = 5.0},
};

var enumerable2 = new[]
{
new {Id = "A", Value = 6.0},
new {Id = "NOT PRESENT", Value = 542.23},
new {Id = "C", Value = 7.0},
new {Id = "D", Value = 8.0},
new {Id = "E", Value = 9.0},
};

var result = enumerable1.Join(enumerable2, arg => arg.Id, arg => arg.Id,
(first, second) => new {Id = first.Id, Value1 = first.Value, Value2 = second.Value});

foreach (var item in result)
Console.WriteLine("{0}: {1} - {2}", item.Id, item.Value1, item.Value2);
Console.ReadLine();

结果输出类似于:

A: 1 - 6
C: 3 - 7
D: 4 - 8
E: 5 - 9

不太明白为什么要返回 null 值,除非绝对需要(此外,double 不可为 null,因此它必须是作为 null 的结果组合条目)。

关于c# - 如何根据公共(public)属性加入两个列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25645679/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com