public static int CardsFPComparison(ICardDat card1, ICardDat card2) { if (card1 == null && card2 == null) { return(0); } if (card1 == null) { return(-1); } if (card2 == null) { return(1); } if (card1.ID == 0 && card2.ID == 0) { return(0); } if (card1.ID == 0) { return(-1); } if (card2.ID == 0) { return(1); } if (card1.ID < 0 && card2.ID > 0) { return(-1); } if (card1.ID > 0 && card2.ID < 0) { return(1); } if (card1.ID > 0) { return(card1.FP.CompareTo(card2.FP)); } else { PathTree tree1 = new PathTree(card1.Parent_FP, card1.Code); PathTree tree2 = new PathTree(card2.Parent_FP, card2.Code); return(tree1.CompareTo(tree2)); } }