2017-03-26 91 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();