2017-03-26 58 views
0
两个词

假设我有以下字符串数组:分组使用LINQ

string[] words = new [] { "Stanford", "University", "in", "Palo", "Alto" }; 

我想获得如下:

["Stanford University", "University in", "in Palo", "Palo Alto"] 

我知道我可能会需要使用Aggregate扩展方法,但我真的不知道如何。

+1

我不会使用LINQ的,考虑你将有实际尺寸文本,而不是简单字符串。从开始到结束循环,找到词语边界,并保持最后一个词与当前返回 - 简单,O(1),没有大的内存成本的情况下reeturns等 – Lanorkin

+0

让人想起[下面的故事](https:///www.scientificamerican.com/article/fact-or-fiction-nasa-spen/)。我与Lanorkin ... [KISS](https://en.wikipedia.org/wiki/KISS_principle) – Noctis

+0

FSharp有一个Seq.pairwise方法(它是Seq模块的一部分,它遍历数据以成对的方式,我相信你可以从C#导入并使用它。 – slimbofat

回答

0

使用LINQ的一种可能方式:

words.Take(words.Length-1).Select((v,i) => $"{v} {words[i+1]}").ToArray(); 
0

好吧,如果你仍然想LINQ ...

Enumerable.Range(0, words.Length - 1).Select(i => words[i] + ' ' + words[i + 1]).ToArray();