2016-06-27 30 views
1

我有一個如下所示的字符串列表。我想根據Start with值對名稱進行排序。我嘗試了一些情況,但失敗了。 實施例 列表有數據等,如何使用LINQ訂購基於StatrtWith的字符串列表

name: "Bible Reading", 
name: "Scripture Reading", 
name: "Ready Set", 
name: "Career Readings", 
name: "Reading-Berks" 

我通過queryValue爲「已讀」,但我不能訂貨基於該值。

IOrderedEnumerable<string> name = result.Select(x => x.name) 
             .OrderBy(i => i.StartsWith(queryValue)); 

預期的輸出,

name: "Ready Set", 
name: "Reading-Berks" 
name: "Bible Reading", 
name: "Scripture Reading", 
name: "Career Readings", 
+1

那你試試?你現在怎麼訂購? –

回答

3

我覺得這是一個關於區分大小寫的問題。

更換

.OrderBy(i => i.StartsWith(queryValue)); 

.OrderByDescending(i => i.StartsWith(queryValue, StringComparison.InvariantCultureIgnoreCase)); 

因爲"Ready Set".StartsWith("read")將返回false

+0

謝謝。它的工作現在,FYI使用「OrderByDescending:而不是orderby –

+0

@SanjeevS謝謝你,我已經更新了我的答案 – fubo

1

你必須使用OrderByDescending和區分大小寫的比較對於所要的結果,因此,您的查詢就會像以下:

IOrderedEnumerable<string> name = result.Select(x => x.name) 
             .OrderByDescending(i =>i.StartsWith(queryValue,StringComparison.InvariantCultureIgnoreCase)); 

這裏是一個working example,將區分OrderByDescendingOrderBy這個例子