Csharp/C#教程:自定义排序(三个领域的IComparer)分享


自定义排序(三个领域的IComparer)

我有一个人类,有三个字段,标题,名称,性别,我想为它创建一个自定义排序,首先按标题排序,然后按名称排序,然后按性别升序排序:

public class SortPerson : IComparer { public int Compare(object x, object y) { (…) } } 

我知道如何只为一个变量进行比较而不是这样做:但我如何才能继续进行三次?

 public class SortPerson : IComparer { int IComparer.Compare(object a, object b) { Person p1=(Person)a; Person p2=(Person)b; if (p1.Title > p2.Title) return 1; if (p1.Title < p2.Title) return -1; else return 0; } } 

非常感谢,

 //Assuming all the fields implement IComparable int result = a.field1.CompareTo(b.field1); if (result == 0) result = a.field2.CompareTo(b.field2); if (result == 0) result = a.field3.CompareTo(b.field3); return result; 

我不知道你对比较器有什么用处,但也许你可以使用“order by”LINQ语句代替比较器,它允许按各种字段排序:

 var orderedListPersons = from p in listPersons orderby p.Title, p.Name, p.Gender select person; 

将以您想要的方式订购listPersons。 您也可以使用LINQ OrderBy和ThenBy方法使用不同的语法进行相同的操作:

 var orderedlistPersons = listPersons.OrderBy(p => p.Title).ThenBy(p => p.Name).ThenBy(p => p.Gender); 

按优先顺序一次按一个字段排序,如果前一个字段比较结果为0(字段相等),则仅继续到下一个字段。 有关2字段排序的示例,请参阅以下内容。

#135 – Implementing IComparable to Allow Sorting a Custom Type

上述就是C#学习教程:自定义排序(三个领域的IComparer)分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请点击右边联系管理员删除。

如若转载,请注明出处:https://www.ctvol.com/cdevelopment/1005137.html

(0)
性感美女图片性感美女图片
上一篇 2021年12月28日
下一篇 2021年12月28日

精彩推荐