假设我有两个由两个属性组成的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
并没有真正知道为什么要返回空值,除非您绝对需要这样做(此外,double是不可为空的,因此它必须是作为结果的组合条目,而不是null)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句