根据主观值对列表进行排序

hsi*_*sim 2 c# sorting list

说我有这个珍贵的岩石清单:Adamantite, Diamonds, Crystal, Gold, Silver, Bronze.

每个rock都是一个对象,它有一个名为property的属性Rarity,它是一个基于以下任一值或这些值的字符串:Common, Precious, Rare, Mythic, Infinite.

我想根据这些价值对我的清单进行排序,哪些Common是最不珍贵的,Infinite也是最珍贵的.有没有办法使用linq,我可以很容易地实现这一点,或者我是否需要为这种情况弹出一个新的方法?我也希望能够从最珍贵到最少的分类.

谢谢!

cdh*_*wie 7

我建议使用枚举而不是字符串.然后你可以根据它们的稀有性简单地在枚举中对这些值进行排序,然后排序应该"正常工作".

或者,考虑实施一个IComparer<string>根据您的要求订购字符串.然后,您可以使用Enumerable.OrderBy()带有IComparer<TKey>重载.