0
我想使用自定義比較器對C#列表進行排序。 我有TreeNodes列表,我想使用子節點數 (TreeNode.GetNodeCount(true))對它們進行排序,但節點數爲< = 2的節點應該放在末尾。 使用下面的代碼,它有時可以工作,但有時我會得到異常,比較器是錯誤的,因爲比較器輸出是錯誤的。C#IComparer使用不同條件的子計數的自定義排序列表
我當前的代碼是:
public class XPathComparer : IComparer<TreeNode>
{
public int Compare(TreeNode x, TreeNode y)
{
if (
(x != null && x.GetNodeCount(true) <= 2) ||
(y != null && y.GetNodeCount(true) <= 2)
)
return -1;
return x.GetNodeCount(true).CompareTo(y.GetNodeCount(true));
}
}