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的一个好方法。谢谢,谢谢。它也很有趣。