c# – 在两个字符串字段上实现IComparable接口
发布时间:2020-12-15 08:27:09 所属栏目:百科 来源:网络整理
导读:如何在两个字符串字段上实现IComparable接口? 使用下面的Person类示例.如果将Person对象添加到列表中.如何根据Surname first THEN Forename对列表进行排序? Class Person{ public string Surname { get; set; } public string Forname { get; set; }} 就像
如何在两个字符串字段上实现IComparable接口?
使用下面的Person类示例.如果将Person对象添加到列表中.如何根据Surname first THEN Forename对列表进行排序? Class Person { public string Surname { get; set; } public string Forname { get; set; } } 就像是? : myPersonList.Sort(delegate(Person p1,Person p2) { return p1.Surname.CompareTo(p2. Surname); }); 解决方法
或者你可以像这样排序一个列表:
myPersonList.Sort(delegate(Person p1,Person p2) { int result = p1.Surname.CompareTo(p2.Surname); if (result == 0) result = p1.Forname.CompareTo(p2.Forname); return result; }); 或者你可以让Person实现IComparable< Person>用这种方法: public int CompareTo(Person other) { int result = this.Surname.CompareTo(other.Surname); if (result == 0) result = this.Forname.CompareTo(other.Forname); return result; } 编辑正如Mark评论的那样,您可能决定需要检查空值.如果是这样,您应该决定是否应该将空值分类到顶部或底部.像这样的东西: if (p1==null && p2==null) return 0; // same if (p1==null ^ p2==null) return p1==null ? 1 : -1; // reverse this to control ordering of nulls (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |