4

我正在尝试使用 LINQ 从列表中创建元组列表,但不知道如何去做。我得到的是外部文件中的各种数据,我正在使用标准方法将部分读取到 aList<Single>中,然后我需要将其转换为该列表的顺序元素组的列表(可能具有可变数量的组中的元素)。换一种说法:

List<Single> with n elements goes to List<Tuple<Single, Single>> with (n/2) elements

或者

List<Single> with n elements goes to List<Tuple<Single, Single, Single>> with (n/3) elements

我无法弄清楚如何使用 LINQ 来执行此操作,因此我已恢复为 for 循环,例如:

For i As Integer = 0 To CType(coords.Item2.Count / 3, Integer) Step 3
    normalList.Add( _
        New Tuple(Of Single, Single, Single)( _
            coords.Item2.Item(i), _
            coords.Item2.Item(i + 1), _
            coords.Item2.Item(i + 2) _
        ) _
    )
Next i

编辑:我一点也不担心通用解决方案,我感兴趣的是是否可以使用 LINQ 来做这种事情。它似乎超出了它的预期目标,但我没有足够的感觉知道这是否属实。

我的问题是是否可以使用 LINQ 完成上述类型的任务。我在 UI 和谷歌中四处游荡,但结果却是空的!

4

2 回答 2

6

也许这会对某人有所帮助。

var pairs = from p in TheListOfAllLists select (
new Tuple<string, string>( p.ParameterName,p.Value.ToString()));
于 2014-10-08T00:14:01.590 回答
5

它可以实现(例如Tuple<Single, Single>)并且以下解决方案不是很复杂,但使用循环更清晰 - 在这种特定解决方案的情况下 - 更有效(输入列表被枚举两次)。C#代码,不懂VB

var even = inputList.Where((elem, ind) => ind % 2 == 0);
var odd = inputList.Where((elem, ind) => ind % 2 == 1);
var outputList = even.Zip(odd, (a, b) => new Tuple<Single, Single>(a, b)).ToList();
于 2013-06-03T09:22:06.237 回答