如何实现IComparable到所有属性?

时间:2018-03-16 19:12:13

标签: c#

我有一个包含Match详细信息的类,结构如下:

public class Match
{
    public string TeamHome { get; set; }
    public string TeamAway { get; set; }
    public string Result { get; set; }
    public League League { get; set; }       
}

public class League
{
    public string Name { get; set; }
    public string Country{ get; set; }
}

我将Match的列表绑定到DataGrid,但是我遇到了问题,当我对DataGrid应用排序时,我得到了:

  

至少有一个对象必须实现IComparable

只有当我已经将项目添加到Matches集合时才会发生这种情况,即DataGrid所限定的集合,并以这种方式定义:

List<Match> Matches = new List<Match>();

我尝试修复实现IComparable界面的错误:

public class Match : IComparable<Match>
{
    public string TeamHome { get; set; }
    public string TeamAway { get; set; }
    public string Result { get; set; }
    public League League { get; set; }       

    public int CompareTo(Match other)
    {
        return this.CompareTo(other);
    }
}

错误仍然发生。 所以我需要问这些问题:

  • 我应该对所有属性实施IComparable吗?
  • 我如何进行更多调查?

感谢您的帮助。

1 个答案:

答案 0 :(得分:-1)

您需要将自己的实现添加到CompareTo(匹配匹配)方法 类似的东西:

sdk/extras/android/m2repository/com/android/support/

在你的班级声明中:     公共课匹配:IComparable 没有public int CompareTo(object obj) { Match match = obj as Match; if(match != null) { return (TeamHome == match.TeamHome && TeamAway == match.TeamAway && Result == match.Result && League.GetHashCode() == match.League.GetHashCode()) ? 0 : -1; } return -1; }

但在这种情况下,我认为像这样重载Equals运算符会更有意义:

<Match>