Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/apache-flex/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用LINQ从字符串列表生成字符串数组列表_C#_Linq - Fatal编程技术网

C# 使用LINQ从字符串列表生成字符串数组列表

C# 使用LINQ从字符串列表生成字符串数组列表,c#,linq,C#,Linq,我有一个给定的数据(我只是把它作为列表在这里) List<string> list1 = new List<string>(); foreach( var x in Regex.Split( "A B C D E F", " " ) ) list1.Add( x ); 我希望使用LINQ获得相同的结果。请帮忙 List<string> list1 = new List<string>(); foreach( var x in Regex.

我有一个给定的数据(我只是把它作为
列表
在这里)

List<string> list1 = new List<string>();
foreach( var x in Regex.Split( "A B C D E F", " " ) )
    list1.Add( x );
我希望使用LINQ获得相同的结果。请帮忙

List<string> list1 = new List<string>();
foreach( var x in Regex.Split( "A B C D E F", " " ) )
    list1.Add( x );
谢谢

List<string> list1 = new List<string>();
foreach( var x in Regex.Split( "A B C D E F", " " ) )
    list1.Add( x );
(编辑:列表2中每个项目的结果应为A和B、C和D、E和F)

尝试以下操作:

List<string> list1 = new List<string>();
foreach( var x in Regex.Split( "A B C D E F", " " ) )
    list1.Add( x );
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();
List list2=list1
.Select((值,索引)=>new{PairNum=index/2,value})
.GroupBy(pair=>pair.PairNum)
.Select(grp=>grp.Select(g=>g.value).ToArray())
.ToList();
这些步骤是:

List<string> list1 = new List<string>();
foreach( var x in Regex.Split( "A B C D E F", " " ) )
    list1.Add( x );
  • Select((值,索引)=>new{PairNum=index/2,value})
    => {0,'A'}{0,'B'}{1,'C'}{1,'D'}{2,'E'}{2,'F'}

  • List<string> list1 = new List<string>();
    foreach( var x in Regex.Split( "A B C D E F", " " ) )
        list1.Add( x );
    
  • GroupBy(pair=>pair.PairNum)
    =>{0:{'A',B'},{1:{'C',D'},{2:{'E',F'}

  • List<string> list1 = new List<string>();
    foreach( var x in Regex.Split( "A B C D E F", " " ) )
        list1.Add( x );
    
  • Select(grp=>grp.Select(g=>g.value).ToArray())
    =>将值转换为数组,因为列表项应该是数组
  • 执行查询

  • 这是超级简单的以下技巧

    List<string> list1 = new List<string>();
    foreach( var x in Regex.Split( "A B C D E F", " " ) )
        list1.Add( x );
    
    var result = Enumerable.Range(0,array.Count()/2)
                           .Select(x=>array.Skip(x*2).Take(2));
    

    您想要做的是与
    SelectMany
    相反的操作,没有内置的方法。也没有办法以两步一步的方式进行迭代。但由于源是一个数组,您可以通过索引访问其内容:

    List<string> list1 = new List<string>();
    foreach( var x in Regex.Split( "A B C D E F", " " ) )
        list1.Add( x );
    
    string[] sourceItems = sourceStr.Split(" ");
    
    var pairQry =
        from index in Enumerable.Range(0, sourceItems.Length - 1)
        where index % 2 == 0
        select new string[] { sourceItems[index], sourceItems[index + 1] };
    
    List<string[]> pairs = pairQry.ToList();
    
    string[]sourceItems=sourceStr.Split(“”);
    var pairQry=
    来自Enumerable.Range(0,sourceItems.Length-1)中的索引
    其中索引%2==0
    选择新字符串[]{sourceItems[index],sourceItems[index+1]};
    列表对=pairQry.ToList();
    
    谢谢。看起来很难。我试试看。我加了一条评论来解释一下。啊。我开始明白了。(虽然尚未完成)也感谢您的精彩解释。旁注:还可以使用字符串的本机
    split
    方法和
    ToList
    方法获取第一个列表:
    list list1=“A B C D E F”.split(“”).ToList()@Me.Name是的,你说得对。但是,这是“给予的”。谢谢。哇,我不认为我的问题不是那么简单。好啊这是学习LINQ的一个好方法。谢谢,谢谢。它也很有趣。