按c#中的参数对对象列表进行排序

时间:2017-04-14 11:28:16

标签: c# sorting

我有用户列表。

我想通过几个参数对列表进行排序。

            case 0:
                //Date (work) int   for example: 0
                Osu_ve.UserList.Sort((e1, e2) => e1.Index.CompareTo(e2.Index));
                break;

            case 1:
                //Name    (work) string     for example: vectis
                Osu_ve.UserList.Sort((e1, e2) => e1.UData.username.CompareTo(e2.UData.username));
                break;

            case 2:
                //PP      (doesn't work)  string   for example: 14688.76
                Osu_ve.UserList.Sort((e1, e2) => Convert.ToDouble(e2.UData.pp_raw).CompareTo(Convert.ToDouble(e1.UData.pp_raw)));
                break;
            case 3:
                // Best PP (doesn't work) string   for example: 820.545
                Osu_ve.UserList.Sort((e1, e2) => Convert.ToDouble(e2.UBestScore[0].pp).CompareTo(Convert.ToDouble(e1.UBestScore[0].pp)));
                break;

            case 4:
                //Rank   (work)   string  for example: 48484
                Osu_ve.UserList.Sort((e1, e2) => Convert.ToDouble(e1.UData.pp_rank).CompareTo(Convert.ToDouble(e2.UData.pp_rank)));
                break;

            case 5:
                //Country Rank  (work)   string  for example: 54 
                Osu_ve.UserList.Sort((e1, e2) => Convert.ToDouble(e1.UData.pp_country_rank).CompareTo(Convert.ToDouble(e2.UData.pp_country_rank)));
                break;

            case 6:
                //Acc (doesn't work)   string    for example: 98.5678623
                Osu_ve.UserList.Sort((e1, e2) => Convert.ToDouble(e1.UData.accuracy.Remove(5)).CompareTo(Convert.ToDouble(e2.UData.accuracy.Remove(5))));
                break;

我收到此错误消息: 输入字符串的格式不正确。

其中很少有人奏效。 问题在哪里?

2 个答案:

答案 0 :(得分:0)

十进制标记需要是一个点而不是逗号 https://msdn.microsoft.com/en-us/library/zh1hkw6k(v=vs.110).aspx

答案 1 :(得分:0)

不得不使用:CultureInfo.CreateSpecificCulture(“en-GB”)

我正在使用来自不同国家/地区的数据。

谢谢大家的帮助。