我正在尝试使用LINQ从列表中创建元组列表,但无法解决如何执行此操作。我得到的是外部文件中的各种数据,我正在使用标准方法将部分读入List<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完成上述类型的任务。我已经在用户界面和谷歌中苦苦挣扎但是空洞了!
答案 0 :(得分:5)
也许这会对某人有所帮助。
var pairs = from p in TheListOfAllLists select (
new Tuple<string, string>( p.ParameterName,p.Value.ToString()));
答案 1 :(得分:4)
可以实现(例如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();