LINQ如何在查询后使用第一项上的位置组合元组中的第二项

gwi*_*dry 4 c# linq

 Tuple<int, double>[] obs1;
 Tuple<int, double>[] obs2;
Run Code Online (Sandbox Code Playgroud)

我想做的是创造 Tuple<int, double>[] obs3

其中包含那些Tuple<int,double>具有相同int的两个obs1obs2,然后设置相应的双为:

obs3[i].Item2 =  obs1[i].Item2 + obs2[i].Item2
Run Code Online (Sandbox Code Playgroud)

我尝试用这种方式找到相关的元组:

var obs3 = from o in obs1 where obs2.Contains(o) select o;
Run Code Online (Sandbox Code Playgroud)

但后来我不知道如何访问和使用Item2 double,而我只是得到了一个子集obs1.

我一直对我的问题嗤之以鼻.我希望它能因为我没有尝试过第一次尝试解决方案.

Tim*_*ter 9

您可以加入两个阵列 Item1

var query = from t1 in obs1
            join t2 in obs2 on t1.Item1 equals t2.Item1
            select Tuple.Create(t1.Item1, t1.Item2 + t2.Item2);

Tuple<int, double>[] obs3 = query.ToArray();
Run Code Online (Sandbox Code Playgroud)