我有两个List<List<double>>
说x和y。我需要创建一个新的List<List<double>> z
,其中每个元素都是Math.sqrt(xElem + yElem)
,其中xElem和yElem分别是x和t的对应元素。我可以在C#中使用LinQ使用单个语句吗?
答案 0 :(得分:4)
要在单个Linq语句中处理多个序列,首先需要Zip。由于你有列表列表,你也需要压缩每对内部列表(可能同时计算结果)。比正常ToList
更新回来构建新列表。
first.Zip(second,
(f,s)=> f.Zip(s,
(x,y)=> Math.Sqrt(x+y)).ToList()).ToList()
注意:正如Sayse所指出的,如果序列具有不同的长度,则该代码将产生仅在较短序列的长度上产生结果。如果你需要以某种方式处理不同长度的序列,你需要弄清楚如何处理只有一个序列有元素的部分。在这种情况下,使用for
进行常规迭代并对两个列表建立索引可能是更具可读性的方法。