使用LINQ(函数式编程)将列表缩减为两个较小的列表

Spe*_*nce 2 c# linq functional-programming

嘿伙计们,我正试图了解LINQ和FP,如果这是天真的话请原谅我.我正在尝试使用LINQ进行一些字符串解析并映射到一个函数,所以我需要将我的字符串拆分成更小的字符串.

我想将数组拆分为两个较小的列表.我可以使用reduce(.Aggregate())来执行此操作吗?我试图找出如何应用reduce来返回列表,但我没有运气.

我想要的是:

myString.ToCharArray().Take(2)
Run Code Online (Sandbox Code Playgroud)

映射到每一个元素.我无法绕过我的脑袋如何减少列表而不将每个元素应用于每一个元素,而不是每一个元素.

具体例子.

给定(1,2,3,4,5,6)

我想要((1,2),(3,4),(5,6))

澄清:

给出"abcdef"

我想要"ab","cd","ef"

为你们的帮助干杯.

Meh*_*ari 6

Enumerable.Range(0, myString.Length)
      .GroupBy(index => index / 2, index => myString[index])
      .Select(eachGroup => new string(eachGroup.ToArray()));
Run Code Online (Sandbox Code Playgroud)

请注意,上面的示例依赖于您对集合具有基于索引的访问权限这一事实.为了使它在IEnumerable<T>没有这个限制的情况下工作:

collection.Select((e,i) => new { Index = i, Element = e })
      .GroupBy(x => x.Index / 2, x => x.Element);
Run Code Online (Sandbox Code Playgroud)