使用IComparable对对象C#进行排序

时间:2018-06-11 08:15:06

标签: c# compareto icomparable

我试图在下面的代码中找到我做错的事情,以便对特定对象项列表进行排序。

对象是网络组 - 它有一个UID(一些id)和一个成员列表(表示为所有成员的列表UID')

(循环无效 - 当B组成A时,A不能包含B

例如:

Group1 - UID:1个成员UID' s:2,3。

Group2 - UID:4名成员UID' s。

Group3 - UID:5名成员UID' s。

Group4 - UID:2名成员UID' s。

Group5 - UID:3名成员UID' s。

(UID' 7不是小组)

这也是创建对象并将它们添加到网络组列表的顺序。

这就是我实施“比较”的方式。对象实现IComparable的地方 -

    public int CompareTo(NetworkObjectGroup other)
    {
        if(this.MembersByUid.Contains(other.UID))
        {
            return 1; 
        }

        else if (other.MembersByUid.Contains(this.UID))
        {
            return -1;
        }

        else
        {
            return 0;
        }
    }

我使用以下调用来对列表进行排序 -

this.MainWindow.DbObject.NetworkObjectGroups.Sort();

在通话结束时,列表未排序并保持不变... 我做错了什么?

排序后我将输出添加到数据表并显示在WPF应用UI中, 每行代表一个对象,这是结果 - result

我希望它按依赖项排序,例如:

组2

第3组

组别4

组5

组别1

谢谢你的到来。

0 个答案:

没有答案