我有一个给定的数据(我只是把它作为一个List在这里).
List<string> list1 = new List<string>();
foreach( var x in Regex.Split( "A B C D E F", " " ) )
list1.Add( x );
Run Code Online (Sandbox Code Playgroud)
现在我想做一个像这样的最终List.
List<string[]> list2 = new List<string[]>();
Run Code Online (Sandbox Code Playgroud)
所以,我试过这个代码(我试过LINQ但没有收获).
int i = 0;
string[] array1 = new string[2];
foreach( var x in list1 )
{
if( i % 2 == 0 )
{
array1[0] = x;
}
else
{
array1[1] = x;
list2.Add( array1 );
array1 = new string[2];
}
i++;
}
Run Code Online (Sandbox Code Playgroud)
我想使用LINQ获得相同的结果.请帮忙.
谢谢.
(编辑:结果应该是列表2中每个项目的A和B,C和D,E和F)
试试这个:
List<string[]> list2 = list1
.Select((value, index) => new { PairNum = index / 2, value })
.GroupBy(pair => pair.PairNum)
.Select(grp => grp.Select(g => g.value).ToArray())
.ToList();
Run Code Online (Sandbox Code Playgroud)
步骤是:
Select((value, index) => new { PairNum = index / 2, value }) => {0,'A'} {0,'B'} {1,'C'} {1,'D'} {2,'E'} {2,'F'}
GroupBy(pair => pair.PairNum) => {0:{'A','B'}},{1:{'C','D'}},{2:{'E','F'}}
Select(grp => grp.Select(g => g.value).ToArray()) =>将值转换为数组,因为列表项应该是数组.| 归档时间: |
|
| 查看次数: |
718 次 |
| 最近记录: |