Hou*_*man 18 .net c# comparison
我有一个人类,有三个字段,标题,名称,性别,我想为它创建一个自定义排序,首先按标题排序,然后按名称排序,然后按性别升序排序:
public class SortPerson : IComparer
{
public int Compare(object x, object y)
{
(…)
}
}
Run Code Online (Sandbox Code Playgroud)
我知道如何只针对一个变量进行比较:但我如何才能继续进行三次?
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;
}
}
Run Code Online (Sandbox Code Playgroud)
非常感谢,
Ita*_*aro 42
//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;
Run Code Online (Sandbox Code Playgroud)
我不知道你对比较器有什么用处,但也许你可以使用"order by"LINQ语句来代替比较器,它允许按各种字段排序:
var orderedListPersons =
from p in listPersons
orderby p.Title, p.Name, p.Gender
select person;
Run Code Online (Sandbox Code Playgroud)
将以您想要的方式订购listPersons.您也可以使用LINQ OrderBy和ThenBy方法使用不同的语法进行相同的操作:
var orderedlistPersons = listPersons.OrderBy(p => p.Title).ThenBy(p => p.Name).ThenBy(p => p.Gender);
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
13819 次 |
最近记录: |