2015-06-22 47 views
-2

我有一個數組,我想按照元素的特定字符數對這個數組進行排序。排序數組包含特定的字符數

var myNewArray = myArray.ToList().Sort(u => u.Name.Split(' ').Length); 

但這根本不起作用。

如何爲此問題提供LINQ代碼?

myArray的[0] = 「WORD1 WORD2」 myArray的[1] = 「WORD1」 myArray的[2] = 「WORD3 WORD2 WORD2 WORD2」

應用時排序我的數組元素順序必須像 myArray的[2],myArray的[0],myArray的[1]

+1

'元素」的特定字符count.'你別指望的字符數,但話你多少......? –

+0

用戶OrderBy,而不是排序。 –

+0

你能提供樣本輸入和期望的輸出嗎? –

回答

1

用途:

var myNewArray = myArray.OrderByDescending(u => u.Name.Split(' ').Length).ToList(); 

計算字數

+0

Yeap這是第一個答案 –

+0

'OrderByDescending''作爲OP需要更大的計數第一 –

+0

@EhsanSajjad真的,我已經改變 –

1

用戶OrderByDescending代替

var myNewArray = myArray.OrderByDescending(u => u.Name.Split(' ').Length).ToList(); 

這將節省您產生兩個內存列出以及

+0

NOP,OP想要的字數 –

+0

這裏是答案 –

1

您的代碼將無法編譯List.Sort就地修改當前列表中的號碼,它不返回一個新的集合。

說了這麼多,你需要Enumerable.OrderByDescending

句子具有更多的話必須是一流的陣列

的因爲你有一個Array開始與您可以簡單地這樣做:

var myNewArray = myArray.OrderByDescending(u => u.Name.Split(' ').Length).ToArray(); 

確保包含using System.Linq;

(刪除ToArray如果你只需要一個IEnumerable<T>

相關問題