C#.net使用CompareTo对多个值排序Generica列表

时间:2017-10-21 21:03:20

标签: c# list sorting generics

我认为我很接近这一点,但不确定如何/从CompareTo方法返回什么。

我的类有以下3个要排序的属性(其中最高值为3)     公共课成绩{         int Score1         int Score2         int Score3     }

List<Scores> scores = new List<Scores>();
scores.Add(new Score{ Score1 = 50, Score2 = 40, Score3 = 30});
scores.Add(new Score{ Score1 = 30, Score2 = 60, Score3 = 50});
scores.Add(new Score{ Score1 = 20, Score2 = 90, Score3 = 100});

我正在寻找的是排序第3行,因为100是任何行的最高数。 Row2将是第二个,因为60是剩余2行的下一个最高值。然后Row1最后一次。

不确定要返回什么?

    virtual public int CompareTo(object obj)
    {
        if (obj is BaseAttack)
        {
            var compareObj = (BaseAttack)obj;
            if (compareObj.Score1 > compareObj.Score2 && compareObj.Score1 > compareObj.Score3)
            {
               return this.a.CompareTo(compareObj.a);
            }
            else if (compareObj.Score2 > compareObj.Score1 && compareObj.Score2 > compareObj.Score3)
            {
                return this.a.CompareTo(compareObj.Score2);
            }
            else
            {
                return compareObj.Score3;
            }
        }
        else
        {
            throw new ArgumentException("Object is not a MyObject ");
        }
    }

1 个答案:

答案 0 :(得分:-2)

CompareTo返回一个整数 - 对象之间的相对差异。例如,如果比较2个整数,则可以返回A - B.

在你的情况下,如果obj> gt,你需要返回1这个和-1否则。如果对象相等则返回0。