2009-08-24 86 views
10

什麼是最簡單的方法來獲得LINQ查詢(從SQL數據庫 - 這很重要嗎?)自然地命令字符串?LINQ和自然排序順序

例如,我目前得到以下結果:

  • 項目1
  • 項目10
  • 項目2

我想是看是這樣的:

  • 項目1
  • 項目2
  • 項目10

我使用的查詢是這樣的:

return from p in dataContext.Projects 
    orderby p.Name 
    select p; 
+0

「自然」是主觀的。你能更具體地描述你的意思嗎? – StingyJack 2009-08-24 17:02:34

+0

@StingyJack - 在人類排序順序中,不是計算機排序順序。 – Kieron 2009-08-24 17:03:31

+1

HA - 「人類」排序順序。你的意思是拉丁字典順序,不區分大小寫?你有這些項目的ID嗎? – StingyJack 2009-08-24 17:04:33

回答

9

沒有內置的方式做到這一點使用.NET框架,但我會建議您閱讀Natural Sorting in C#就該主題和開源實現進行討論。

0

我只是晚了幾年晚會,但我只是想解決類似的問題,這對我很有用。希望其他人認爲這有幫助。

比如說,你在一個列表的字符串,嘗試這樣的事情:

List<string> projects = new List<string> 
{ 
    "Project 1", 
    "Project 10", 
    "Project 2" 
}; 
//Sort by a substring of the string value which omits the non-numeric characters 
IEnumerable<string> sorted = projects.OrderBy(p => p.Substring(p.IndexOf(' ') + 2, p.Length - (p.IndexOf(' ') + 2)));