我有一个给定的数据(我只是把它作为一个 List
在这里)。
List<string> list1 = new List<string>();
foreach( var x in Regex.Split( "A B C D E F", " " ) )
list1.Add( x );
现在我想做一个这样的最终列表。
List<string[]> list2 = new List<string[]>();
因此,我尝试使用此代码(我尝试使用 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++;
}
我想使用 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();
步骤是:
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())
=> 将值转换为数组,因为列表项应该是数组。- 执行查询
关于c# - 使用 LINQ 从字符串列表创建字符串数组列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41206934/