映射两个点列表并用linq替换

时间:2016-09-12 13:27:46

标签: c# linq mapping

我有两个包含点(xy)的列表。 x值是时间,y值是传感器数据。这两个列表大多数共享相同的时间戳。

我想在两个列表中映射时间戳,并将列表A中的x值替换为列表B中相应的(时间明确的)y值。

下图说明了我在寻找的内容:

enter image description here

有人知道怎么用linq做这个吗?

1 个答案:

答案 0 :(得分:7)

这看起来像是一个直接的联接。

var desired = from a in ListA
              join b in ListB on a.Time equals b.Time
              select new 
              {
                  AValue = a.Value, 
                  BValue = b.Value
              };

或方法语法

var desired = ListA.Join(
    ListB, 
    a => a.Time, 
    b => b.Time, 
    (a,b) => new {AValue = a.Value, BValue = b.Value});