我有一個對象列表,我想使用Option.Numero_Reference屬性進行排序。c#OrderBy string hierachy xx.xx.xx
的事情是,Numero_reference在xx.xx.xx格式
字符串有沒有辦法通過XX組的順序?
這裏是一個已經做了,現在,巫不工作:
myList.OrderByDescending(x => x.Option.Numero_Reference)
.ThenByDescending(x => x.Option.Numero_Reference.Substring(x.Option.Numero_Reference.IndexOf(".")))
此代碼給了我這樣的:
- 3.9.6
- 3.9.2
- 3.8
- 3.7.2
- 3.6
- 3.17.5
- 3.17
- 3.16.4.7
- 3.11
- 3.10.1
當我應該有:
- 3.17.5
- 3.17
- 3.16.4.7
- 3.11
- 3.10.1
- 3.9.6
- 3.9.2
- 3.8
- 3.7.2
- 3.6
了我們可以看到,基本的字符串比較在第一點後第10點出錯。
另一件事是,分組的數量是可變的,並且不遵循任何規則。
任何人都可以幫忙嗎?
編輯
這裏是與版本的解決方案完整的查詢:
context.Options.Join(context.Categories_Options,
opt => opt.ID_Option,
cat_opt => cat_opt.ID_Option,
(opt, cat_opt) => new { Option = opt, Categories_Options = cat_opt })
.Where(x => x.Categories_Options.ID_Categorie == catId)
.OrderByDescending(x => new Version(x.Option.Numero_Reference))
.Select(x => x.Option)
.ToList();
這只是給我一個空列表。
它給你'空list'因爲'Where'方法,那**犯規'**'涉及Version'的'OrderByDescending'應該沒有任何過濾出來的元素工作確定。 –