c# - 使用 LINQ 从字符串列表创建字符串数组列表

标签 c# linq

我有一个给定的数据(我只是把它作为一个 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();

步骤是:

  1. Select((value, index) => new { PairNum = index/2, value }) => {0,'A'} {0,'B'} {1,'C'} {1,'D'} {2,'E'} {2,'F'}

  2. GroupBy(pair => pair.PairNum) => {0:{'A', 'B'}}, {1:{'C', 'D'} }, {2:{'E', 'F'}}

  3. Select(grp => grp.Select(g => g.value).ToArray()) => 将值转换为数组,因为列表项应该是数组。
  4. 执行查询

关于c# - 使用 LINQ 从字符串列表创建字符串数组列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41206934/

相关文章:

c# - 如何纠正警告 CS1707?

c# - 使用 LINQ 检查 List<string> 是否包含另一个 List<string> 中的元素

c# - 为什么不能将可空值声明为 const?

c# - 产量返回 brainfreeze

c# - 将以下 SQL 转换为 LINQ 的问题

c# - dotnet 新项目无法恢复它的依赖项

c# - 使用反射查找具有自定义属性的方法

c# - IEnumerable<T>/IQueryable<T> 上的动态 LINQ OrderBy

c# - 嵌套类的 LINQ 查询

c# - Oracle Entity Framework - 调用自定义函数 (EDIT_DISTANCE)